JTextArea中的文本已更改事件? 如何?

我一直在尝试为我的JTextArea创建一个文本更改事件处理机制。 为了我的目的,只要JTextArea的文本发生变化,就必须触发事件。 我尝试使用KeyListener接口,这是我的代码。

 txtArea.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent arg0) { } @Override public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent arg0) { currentText = text.getText(); if (currentText == textString) JOptionPane.showMessageDialog(null, "Correct"); } }); 

当textarea的文本与硬编码文本匹配时,什么也没发生。 如何为此事件改变事件。
可以使用PropertyChangedListener实现此目标吗? 如果可以,那怎么样?

我会通过getDocument() (实际上是一个PlainDocument)获取JTextArea的Document并使用DocumentListener来监听更改。 这样您就可以从键击和复制/粘贴/剪切事件中捕获更改。

不是JTextArea,但包含的文档接收更新,因此您需要:

 jTextArea.getDocument().addDocumentListener(new DocumentListener() { @Override public void removeUpdate(DocumentEvent e) { } @Override public void insertUpdate(DocumentEvent e) { } @Override public void changedUpdate(DocumentEvent arg0) { } }); 

您正在使用==比较字符串

 if (currentText == textString) 

这永远不会成真。 这将比较字符串是否是相同的String对象。 你应该使用equals。

 if (currentText.equals( textString) ) 

您可能还想查看DocumentListeners 。 另请参见如何比较Java中的字符串?