我正在尝试创建一个只接受整数的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){}
}
答案 0 :(得分:1)
您的问题是一种方法 - 您不应该使用带有Swing文本组件的KeyListener。相反,如果要使用文本组件(如JTextField)正确过滤键盘输入,请将DocumentFilter添加到JTextField的文档中。在过滤器中,覆盖它包含的3种方法 - insertString(...)
,remove(...)
和replace(...)
- 并且仅在当前文本加上附加文本(或减号)时调用超级方法删除的文本)有效。
有关完整示例(由我),请查看this answer of mine类似的问题。
另一个更简单的选择是使用InputVerifier。