如何忽略Swing中的按键事件?

e-q*_*-qi 3 java swing keyevent

我想让文本字段只接受来自用户的数字和退格按钮.

我添加了用于检查用户密钥的功能,但如果密钥不是数字,我不知道如何停止按键事件.

我需要在函数中添加什么代码才能停止事件?

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

   if(!((evt.getKeyCode()==8) || (evt.getKeyCode()>48 && evt.getKeyCode()<57)))
   {
      //how to stop the key pressed event
   }
 }
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 7

您不需要使用Swing事件处理来实现此目的.

最好的方法是使用JFormattedTextField.

有关详细信息,请参阅Java教程:

http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html


Bhe*_*ung 7

尝试覆盖keyTyped

@Override
public void keyTyped(KeyEvent evt) {
    if (!Character.isDigit(evt.getKeyChar()) && !(evt.getKeyCode() == KeyEvent.VK_BACK_SPACE)) {
        evt.consume();
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:

如果您希望粘贴不起作用并强制输入输入,您可以使用以下内容。

@Override
public void keyPressed(KeyEvent evt) {
    if(evt.isControlDown() && evt.getKeyCode() == KeyEvent.VK_V) {
        evt.consume();
    }
}
Run Code Online (Sandbox Code Playgroud)