2017-07-08 64 views
1

只要我在文本框中按下退格键,就会触发此代码。有没有办法忽略java中的退格键?

private void txtAgeKeyTyped(java.awt.event.KeyEvent evt) {         
     char agetext= evt.getKeyChar(); 
     if(!(Character.isDigit(agetext))){ 
      evt.consume(); 
      JOptionPane.showMessageDialog(null,"Age is only written in Numbers!"); 
     } 
} 

它只应该被触发,如果我只键入字母而不是数字。

由于某种原因,无论何时按下Backspace键都会触发。

有没有办法让我在不触发这段代码的情况下使用退格键?

对不起,这是我第一次摆弄关键事件

+0

它是什么方法?它为什么触发?请给你的问题添加一些细节! –

+0

https://stackoverflow.com/questions/15693904/java-keylistener-keytyped-backspace-esc-as-input –

+0

如果我想删除使用退格在文本框中的字符消息“年龄只写在数字!”出现 我在Netbeans中使用KeyTyped – user3647634

回答

4

退格字符只是\b。正如你所看到的,VK_BACK_SPACE常量的定义如下:

public static final int VK_BACK_SPACE  = '\b'; 

恒定在java.awt.event.KeyEvent类BTW定义。如果你使用IntelliJ,它会自动为你静态导入它。

您可以检查agetext是否为\b。如果是,从方法返回:

private void txtAgeKeyTyped(java.awt.event.KeyEvent evt) { 
    char agetext= evt.getKeyChar(); 
    if (agetext == VK_BACK_SPACE) return; 
    if(!(Character.isDigit(agetext))){ 
     evt.consume(); 
     JOptionPane.showMessageDialog(null,"Age is only written in Numbers!"); 
    } 
} 
+0

是否有另一种方法可以忽略Backspace? – user3647634

+0

据我所知,没有@ user3647634 – Sweeper

+0

@ user3647634检查了这一点:https://stackoverflow.com/questions/32018509/how-to-define-an-eclipse-mask-formatted-text-field它可能帮你。 – Sweeper

相关问题