条件为True时发送KeyCode(java)

时间:2016-04-28 21:09:36

标签: java swing keyevent

我正在尝试创建一个只接受整数的JTextfield。 但由于某种原因,密码不会被发送到应用程序

private void keyTyped(java.awt.event.KeyEvent evt) {                                   
    String s = String.valueOf(evt.getKeyChar());
    try{
        if(!(s.matches("[0-9]+")))
    {
        evt.setKeyCode(KeyEvent.VK_DELETE);
    }
    }catch(Exception e){}
}                                  

1 个答案:

答案 0 :(得分:1)

您的问题是一种方法 - 您不应该使用带有Swing文本组件的KeyListener。相反,如果要使用文本组件(如JTextField)正确过滤键盘输入,请将DocumentFilter添加到JTextField的文档中。在过滤器中,覆盖它包含的3种方法 - insertString(...)remove(...)replace(...) - 并且仅在当前文本加上附加文本(或减号)时调用超级方法删除的文本)有效。

有关完整示例(由我),请查看this answer of mine类似的问题。

另一个更简单的选择是使用InputVerifier