2011-03-10 79 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