Charva : JTextArea : 在打印之前测试一个字符(KeyEvent)?

Charva : JTextArea : Test a char (KeyEvent) before print it?

我正在使用 Charva 编写销售点软件。我在 JTextArea 中有一个命令行。我只想在其中允许特殊字符。我想在打印之前测试用户的按键。如果是允许的字符,则打印,如果不是,则不打印。

另一种方法,如果不允许删除字符,但由于某些原因我无法做到。

我会这样做:

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

    String key = String.valueOf(evt.getKeyChar());
    String validChars = "[a-zA-Z0-9]";

    if(!key.matches(validChars))
        evt.consume();
 }

解释:获取输入的字符,将其转换为字符串(不知道字符是否有 .matches(regexp),java 中的字符不是我的朋友),检查是否与我的正则表达式匹配,如果不匹配,事件被消费了,key没有打印出来。

PS:这里使用的事件是KeyTyped.

PS2:如果您不熟悉正则表达式 (regexp),请查看 this