如何取消jtextarea事件?

时间:2015-01-14 07:47:46

标签: java c# swing events

这是场景。我的项目中有一个jtextArea。在jtextArea的keypressed事件上,我使用getKeyChar() KeyEvent方法检查按下的键是否有效。如果字符是有效字符(根据我的条件),则应插入,否则不应该插入。我已经搜索过,但是如果字符无效,我找不到取消事件的方法。在C#中这是可能的,但在java中是否有任何方法可以取消事件,以便在jtextarea中不插入字符?

这是使用evt.consume()的一些简单代码,但它不起作用

private void txtArea1KeyPressed(java.awt.event.KeyEvent evt) {                                    

        evt.consume();
        return;
}

2 个答案:

答案 0 :(得分:2)

不要将KeyListener与文本组件一起使用,无法保证触发事件的顺序,因此在您的监听器发布时,密钥可能已经更新了基础Document通知。

它也不涉及当用户将文本粘贴到字段中或者该字段由程序更新时会发生什么

相反,请使用DocumentFilter,这不允许过滤掉已被推送到基础Document模型

的组件的内容

请参阅Implementing a Document FilterDocumentFilter Examples

答案 1 :(得分:1)

使用

结束您的事件处理程序
event.consume()

event.consume() docs