首页 > 解决方案 > 在 JTextArea 中的 keyPressed 上输出

问题描述

当我试图从中获取文本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'键后

标签: javaswingjtextareakeylistener

解决方案


正如评论中已经提到的,您可以使用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);

推荐阅读