JTextArea 中的 keyPressed 输出

Output on keyPressed in JTextArea

当我尝试从 JTextArea 获取文本并打印它时,它在按下下一个键后打印字符串 我想在按下该键时打印它。

代码如下:

textArea_1.addKeyListener(new KeyAdapter() {
        @Override
        public void keyPressed(KeyEvent e) {
            x=textArea_1.getText().toString();
            System.out.println(x);
        }

        @Override
        public void keyReleased(KeyEvent e) {
        }

        @Override
        public void keyTyped(KeyEvent e) {
        }
    });

例如,首先我按下 's' 键,然后我按下 'a' 键 按 'a' 键后的输出是 s 按 's' 键后输出为空 但是在我按下 's' 键

之后我想要 s

如评论中所述,您可以使用 DocumentListener,例如:

javax.swing.event.DocumentListener myDocumentListener = new javax.swing.event.DocumentListener() {
    @Override
    public void changedUpdate(javax.swing.event.DocumentEvent documentEvent) {
        output(documentEvent);
    }
    @Override
    public void insertUpdate(javax.swing.event.DocumentEvent documentEvent) {
        output(documentEvent);
    }
    @Override
    public void removeUpdate(javax.swing.event.DocumentEvent documentEvent) {
        output(documentEvent);
    }
    private void output(javax.swing.event.DocumentEvent documentEvent) {
        Document source = documentEvent.getDocument();
        int length = source.getLength();
        try {
            System.out.println(source.getText(0, length));
        }
        catch (javax.swing.text.BadLocationException ex) {
            System.err.println("Invalid Index Supplied!");
        }
    }
};
jTextArea1.getDocument().addDocumentListener(myDocumentListener);