[英]KeyListener on jTextField is not working
我在jTextField中添加了事件
jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
jTextField1KeyTyped(evt);
}
});
这是我的代码的第二部分(负责处理键盘按钮):
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
switch (evt.getKeyCode()) {
case KeyEvent.VK_1:
print(one);
System.out.println("1");
break;
case KeyEvent.VK_2:
print(two);
System.out.println("2");
break;
case KeyEvent.VK_3:
print(three);
System.out.println("3");
break;
case KeyEvent.VK_4:
print(four);
System.out.println("4");
break;
case KeyEvent.VK_5:
print(five);
System.out.println("5");
break;
case KeyEvent.VK_6:
print(six);
System.out.println("6");
break;
case KeyEvent.VK_7:
print(seven);
System.out.println("7");
break;
case KeyEvent.VK_8:
print(eight);
System.out.println("8");
break;
case KeyEvent.VK_9:
print(nine);
System.out.println("9");
break;
case KeyEvent.VK_0:
print(zero);
System.out.println("0");
break;
}
}
但它不起作用。 当我任何按钮 - 没有任何事情发生。
我强烈敦促您积极改变自己的立场。 您不应该在JTextField中使用KeyListener,因为这会混淆JTextField的功能。 使用DocumentListener或DocumentFilter或其他更好的选项之一。 由于您似乎没有限制输入,因此请通过addDcoumentListener(...)将DocumentListener附加到JTextField的Document上。
即
jTextField1.getDocument().addDocumentListener(new DocumentListener() {
public void keyTyped(java.awt.event.KeyEvent evt) {
void insertUpdate(DocumentEvent e) {
// ... code to check document change here
}
void removeUpdate(DocumentEvent e){
// ... code to check document change here
}
void changedUpdate(DocumentEvent e){
// ... code to check document change here
}
}
});
编辑:如果您想要捕获计算器的数字键按下,那么也不要使用它。 而是使用键绑定。
好吧,应该使用DocumentListener或ChangeListener,也可以选择FocusListener,keyListener可以做到这一点,但是如果要避免使用KeyBindings来解决焦点问题,或者使用它时会遇到一些焦点问题,或者可以尝试显式调用grabFocus()对于特定组件的方法,当使用组件注册时,keyListener需要该组件处于焦点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.