【发布时间】:2016-10-11 02:22:01
【问题描述】:
我正在开发一个文本编辑器,我希望用户能够找到并替换他们选择的单词。我目前有替换单词的代码,但它一次替换了所有出现的单词。我实际上想在当时出现一次替换这个词。例如,如果用户想用“狗”替换“猫”,他们将不得不单击一个按钮,它将替换它找到的第一个“猫”,然后用户必须再次单击该按钮来替换另一个一次发生一个。我确实查看了这里的一些问题,但其中大多数似乎一次替换了所有出现的问题,这就是我遇到的问题。这就是我到目前为止所拥有的。提前感谢任何能够帮助我的人。
class Bottom extends JPanel
{
private JPanel bottomPanel = new JPanel();
private JButton replaceButton = new JButton("Replace");
private JTextField textField = new JTextField("", 15);;
private JLabel label = new JLabel(" with ");
private JTextField textField2 = new JTextField("", 15);
public Bottom()
{
bottomPanel.add(replaceButton);
bottomPanel.add(textField);
bottomPanel.add(label);
bottomPanel.add(textField2);
add(bottomPanel);
replaceButton.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try{
String findText = textField.getText();
int findTextLength = findText.length();
String replaceText = textField2.getText();
int replaceTextLength = replaceText.length();
Document doc = textArea.getDocument();
String text = doc.getText(0, doc.getLength());
int counter = 0;
int lengthOffset = 0;
while ((lengthOffset = text.indexOf(findText, lengthOffset)) != -1)
{
int replaceOffset = lengthOffset + ((replaceTextLength - findTextLength) * counter);
textArea.select(replaceOffset, replaceOffset + findTextLength);
textArea.replaceSelection(replaceText);
lengthOffset += replaceTextLength;
counter++;
}
}catch(BadLocationException b){b.printStackTrace();}
}
});
}
}
【问题讨论】: