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中的字符串?