2017-07-08 101 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

相關問題