pro*_*spk 23 java events swing
我一直试图为我的文本改变事件处理机制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");
}
});
Run Code Online (Sandbox Code Playgroud)
当textarea的文本与硬编码文本匹配时,什么都没发生.如何为此事件改变事件.
这个目标能否实现PropertyChangedListener?如果可以,那怎么样?
Hov*_*els 43
我会通过getDocument()(实际上是一个PlainDocument)获取JTextArea的Document 并使用DocumentListener来监听更改.这样,您可以从键击以及复制/粘贴/剪切事件中捕获更改.
NCo*_*ode 35
不是JTextArea,但包含的文档会收到更新,因此您需要:
jTextArea.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
}
@Override
public void insertUpdate(DocumentEvent e) {
}
@Override
public void changedUpdate(DocumentEvent arg0) {
}
});
Run Code Online (Sandbox Code Playgroud)
Cap*_*ffe 15
您正在使用==比较字符串
if (currentText == textString)
Run Code Online (Sandbox Code Playgroud)
这永远不会成真.这将比较字符串是否是相同的String对象.你应该使用equals.
if (currentText.equals( textString) )
Run Code Online (Sandbox Code Playgroud)
您可能还想查看DocumentListeners.另请参见如何比较Java中的字符串?