如何解决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' 键之后
解决方法
正如评论中已经提到的,您可以使用 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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。