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

2022-09-01 12:22:40

我一直在尝试为我的.出于我的目的,每当 的文本发生更改时,都必须触发事件。我尝试使用该接口,这是我的代码。JTextAreaJTextAreaKeyListener

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");

    }
});

当文本区域的文本与硬编码的文本匹配时,没有任何反应。如何为此创建事件更改事件。
这个目标可以通过?如果可以,那么如何?PropertyChangedListener


答案 1

我会通过(实际上是一个PlainDocument)获得JTextArea的文档,并使用DocumentListener来侦听更改。通过这种方式,您可以捕获来自击键以及复制/粘贴/剪切事件的变化。getDocument()


答案 2

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

jTextArea.getDocument().addDocumentListener(new DocumentListener() {

        @Override
        public void removeUpdate(DocumentEvent e) {

        }

        @Override
        public void insertUpdate(DocumentEvent e) {

        }

        @Override
        public void changedUpdate(DocumentEvent arg0) {

        }
    });