2011-03-10 84 views
3

我想使用Java Swing删除文本区域中的选定文本,但我找不到这样做的方法。在某个时候,我想到了使用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!=""){ 


     } 
    } 

} 

public static void main(String[] args) { 
    Runnable r = new Runnable() { 

     @Override 
     public void run() { 
      DeleteTest de = new DeleteTest(); 

     } 
    }; 

    SwingUtilities.invokeLater(r); 

} 

}

回答

0

如果你想删除只选定的文本,然后试试这个:

textArea.setText(textArea.getText().replace(textarea.getSelectedText(),"")); 

希望这有助于。

+0

这个工程,非常感谢你帮助我...... :-) – 2011-03-10 04:45:51

+6

但是,如果所选文本的一个版本在textarea中出现多次,这将失败。 – George 2011-03-10 04:47:29

+0

@George:是的。但它可以通过一些更多的努力来处理。根据我认为OP没有这种情况。 – 2011-03-10 04:52:18

31
txtArea.replaceSelection(""); 

这应该更短,更有效。

+0

+1,这是为Swing文本组件设计的更好的解决方案。 – camickr 2011-03-10 05:08:18

+0

方式甜蜜和方式聪明! – ncmathsadist 2016-02-03 21:30:38