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

Java Charva:JTextArea:在打印字符(KeyEvent)之前测试它?,java,jtextarea,ncurses,Java,Jtextarea,Ncurses,我正在使用Charva编写一个销售点软件。我在JTextArea中有一个命令行。我只想让它有特殊的特性。我想在打印之前测试用户的按键。如果它是一个允许的字符,它将被打印,如果不是,它将不会被打印 另一种方法是在不允许的情况下删除字符,但由于某些原因我无法执行此操作。我会执行以下操作: private void myTextArea_KeyTyped(java.awt.event.KeyEvent evt) { S

我正在使用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中的字符不是我的朋友),检查是否与我的regexp匹配,如果不匹配,事件将被使用,并且不会打印密钥

PS:这里使用的事件是
KeyTyped


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

我不知道事件的consume方法。我会试试的,它可能会起作用。谢谢如果我的答案符合您的需要,请将其标记为最佳答案(直到有人提供更好的答案)。