Java 仅删除文本区域中的选定文本
我想使用JavaSwing删除文本区域中选定的文本,但找不到方法。在某个时候,我想到了使用Java 仅删除文本区域中的选定文本,java,user-interface,swing,Java,User Interface,Swing,我想使用JavaSwing删除文本区域中选定的文本,但找不到方法。在某个时候,我想到了使用textArea.setText(“”)但是,当我这样做时,它会清除所有内容。谁能帮我一下吗 这是我到目前为止写的代码 public class DeleteTest extends JFrame implements ActionListener { JPanel panel; JTextArea textArea; JButton button; public DeleteTest() {
textArea.setText(“”)代码>但是,当我这样做时,它会清除所有内容。谁能帮我一下吗
这是我到目前为止写的代码
public class DeleteTest extends JFrame implements ActionListener {
JPanel panel;
JTextArea textArea;
JButton button;
public DeleteTest() {
setVisible(true);
setSize(500, 500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
panel = new JPanel();
panel.setBackground(getBackground().BLACK);
textArea = new JTextArea(300, 300);
button = new JButton("clear");
button.addActionListener(this);
panel.add(button);
add(textArea, BorderLayout.CENTER);
add(panel, BorderLayout.SOUTH);
}
@Override
public void actionPerformed(ActionEvent arg0) {
if (arg0.getSource()==button){
String selected=textArea.getSelectedText();
if(!selected.equals("")){
}
}
}
public static void main(String[] args) {
Runnable r = new Runnable() {
@Override
public void run() {
DeleteTest de = new DeleteTest();
}
};
SwingUtilities.invokeLater(r);
}
}如果只想删除选定的文本,请尝试以下操作:
textArea.setText(textArea.getText().replace(textarea.getSelectedText(),""));
希望这有帮助
txtArea.replaceSelection("");
这应该更短更有效。对于JavaFx TextArea您可以使用删除文本(IndexRange range)方法删除所选文本
textArea.deleteText(textArea.getSelection());
要根据索引删除文本,请使用删除文本(int-start,int-end)重载方法
textArea.deleteText(startIndex,endIndex);
我们可以使用replaceSelection(字符串替换)方法删除文本,实际上,deleteText在内部使用了replaceText方法,但是deleteText方法将提高代码的可读性。但是如果所选文本的一个版本在文本区域中出现多次,则此操作将失败。@George:是的。但这可以通过更多的努力来解决。根据我的观点,我认为OP没有这种情况。-1,是的,这可能会起作用,但是这个解决方案没有显示出对Swing如何工作的理解,因此不是一个很好的解决方案。使用setText(…)方法代价高昂,需要解析整个文本并重新创建文档。这是一个“字符串”解决方案,而不是一个“文本组件”解决方案。+1,是为Swing文本组件设计的更好的解决方案。非常甜蜜和聪明!