这是场景。我的项目中有一个jtextArea。在jtextArea的keypressed事件上,我使用getKeyChar()
KeyEvent
方法检查按下的键是否有效。如果字符是有效字符(根据我的条件),则应插入,否则不应该插入。我已经搜索过,但是如果字符无效,我找不到取消事件的方法。在C#
中这是可能的,但在java
中是否有任何方法可以取消事件,以便在jtextarea中不插入字符?
这是使用evt.consume()
的一些简单代码,但它不起作用
private void txtArea1KeyPressed(java.awt.event.KeyEvent evt) {
evt.consume();
return;
}
答案 0 :(得分:2)
不要将KeyListener
与文本组件一起使用,无法保证触发事件的顺序,因此在您的监听器发布时,密钥可能已经更新了基础Document
通知。
它也不涉及当用户将文本粘贴到字段中或者该字段由程序更新时会发生什么
相反,请使用DocumentFilter
,这不允许过滤掉已被推送到基础Document
模型
答案 1 :(得分:1)