2016-09-28 33 views
-3

爲什麼我仍然可以在jtextfield中輸入這個特殊字符「`」,「_」和「^」。與此爲什麼我仍然可以輸入這個特殊字符「`」,「_」和「^」

private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {          
    char c = evt.getKeyChar(); 
    if (!((c >= 'A') && (c <= 'z') || 
      (c == KeyEvent.VK_SPACE)|| 
      (c == KeyEvent.VK_MINUS)|| 
    (c == KeyEvent.VK_BACK_SPACE) || 
    (c == KeyEvent.VK_DELETE))) { 
    getToolkit().beep(); 
    evt.consume(); 
    } 
+0

由於這些字符放在Unicode Table的'A'-'z'範圍內(在'Z'和'a'字符之間,我們有'''''''''''''''''''''' '\'')。修改你的代碼來指定'A-Z'範圍和'a-z'。 – Pshemo

回答

1

因爲這些字符的代碼騙那些「Z」和「之間一個」什麼滿足你的第一個條件(c >= 'A') && (c <= 'z')

DEC HEX BIN  CHR 
... 
88 58 01011000 X 
89 59 01011001 Y 
90 5A 01011010 Z 
91 5B 01011011 [ 
92 5C 01011100 \ 
93 5D 01011101 ] 
94 5E 01011110^<--- 
95 5F 01011111 _ <--- 
96 60 01100000 ` <--- 
97 61 01100001 a 
98 62 01100010 b 
99 63 01100011 c 
... 

這六個字符,填補了國內空白到32,因爲字母表只有26個字母,但需要讓a的代碼爲01100001(如A01000001)。這種方式(現在仍然)更容易被人讀取。

相關問題