java - 如何取消jtextarea事件?

标签 java c# swing events

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

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

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

        evt.consume();
        return;
}

最佳答案

不要将 KeyListener 与文本组件一起使用,无法保证事件的触发顺序,因此键可能已经更新了底层 Document当您的听众收到通知时。

它也不处理当用户将文本粘贴到字段中或程序更新字段时发生的情况

相反,请使用DocumentFilter,它不允许过滤掉推送到Document模型底层组件的内容

参见Implementing a Document FilterDocumentFilter Examples

关于java - 如何取消jtextarea事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27938054/

相关文章:

java - 从文件中读取交替数据类型

java - Mongo、spring 和序列化

java - 简单 JOGL 测试用例中的 NullPointerException

java - 使用java流将两个集合的元素与分隔符连接起来

java - 使用 Java 将空间元数据注入(inject)视频的方法

c# - 在类中多次使用 IDisposable 对象的更好方法

c# - 在推荐系统中使用矩阵分解

c# - 我可以强制 SQL SMO 使用 READ UNCOMMITTED 隔离吗?

java - 如何正确结束简单的纸牌游戏?

java - 用Java绘制图形