2011-04-23 52 views
2

我想獲得keycode(String)而不是GWT keyUP事件處理程序中的Native keycode我試過但我只能得到返回密鑰ASCII的本地keycode。是否有可能獲得鍵碼的字符串?是否有可能在GWT中獲取鍵碼而不是Native keycode?

我認識到GWT不使用一些java JRE,他們只使用JRE,他們發現它很有用:(真的很失望,我必須編寫一個驢工作代碼才能獲得和我一樣的功能,從GWT這裏失去的JRE是我的代碼來解決這個問題......我感到羞愧寫這樣的代碼,但GWT讓我沒有其他選擇,如果任何一個可以幫助請!

if((int)event.getNativeKeyCode()==13) 
      { 
       code="Enter"; 
      } 
      if((int)event.getNativeKeyCode()==65) 
      { 
       code="A"; 
      } 
      if((int)event.getNativeKeyCode()==66) 
      { 
       code="B"; 
      } 
      if((int)event.getNativeKeyCode()==67) 
      { 
       code="C"; 
      } 
      if((int)event.getNativeKeyCode()==68) 
      { 
       code="D"; 
      } 
      if((int)event.getNativeKeyCode()==69) 
      { 
       code="E"; 
      } 
      if((int)event.getNativeKeyCode()==70) 
      { 
       code="F"; 
      } 
      if((int)event.getNativeKeyCode()==71) 
      { 
       code="G"; 
      } 
      if((int)event.getNativeKeyCode()==72) 
      { 
       code="H"; 
      } 
      if((int)event.getNativeKeyCode()==73) 
      { 
       code="I"; 
      } 
      if((int)event.getNativeKeyCode()==74) 
      { 
       code="J"; 
      } 
      if((int)event.getNativeKeyCode()==75) 
      { 
       code="K"; 
      } 
      if((int)event.getNativeKeyCode()==76) 
      { 
       code="L"; 
      } 
      if((int)event.getNativeKeyCode()==77) 
      { 
       code="M"; 
      } 
      if((int)event.getNativeKeyCode()==78) 
      { 
       code="N"; 
      } 
      if((int)event.getNativeKeyCode()==79) 
      { 
       code="O"; 
      } 
      if((int)event.getNativeKeyCode()==80) 
      { 
       code="P"; 
      } 
      if((int)event.getNativeKeyCode()==81) 
      { 
       code="Q"; 
      } 
      if((int)event.getNativeKeyCode()==82) 
      { 
       code="R"; 
      } 
      if((int)event.getNativeKeyCode()==83) 
      { 
       code="S"; 
      } 
      if((int)event.getNativeKeyCode()==84) 
      { 
       code="T"; 
      } 
      if((int)event.getNativeKeyCode()==85) 
      { 
       code="U"; 
      } 
      if((int)event.getNativeKeyCode()==86) 
      { 
       code="V"; 
      } 
      if((int)event.getNativeKeyCode()==87) 
      { 
       code="W"; 
      } 
      if((int)event.getNativeKeyCode()==88) 
      { 
       code="X"; 
      } 
      if((int)event.getNativeKeyCode()==89) 
      { 
       code="Y"; 
      } 
      if((int)event.getNativeKeyCode()==90) 
      { 
       code="Z"; 
      } 
      if((int)event.getNativeKeyCode()==48) 
      { 
       code="0"; 
      } 
      if((int)event.getNativeKeyCode()==49) 
      { 
       code="1"; 
      } 
      if((int)event.getNativeKeyCode()==50) 
      { 
       code="2"; 
      } 
      if((int)event.getNativeKeyCode()==51) 
      { 
       code="3"; 
      } 
      if((int)event.getNativeKeyCode()==52) 
      { 
       code="4"; 
      } 
      if((int)event.getNativeKeyCode()==53) 
      { 
       code="5"; 
      } 
      if((int)event.getNativeKeyCode()==54) 
      { 
       code="6"; 
      } 
      if((int)event.getNativeKeyCode()==55) 
      { 
       code="7"; 
      } 
      if((int)event.getNativeKeyCode()==56) 
      { 
       code="8"; 
      } 
      if((int)event.getNativeKeyCode()==57) 
      { 
       code="9"; 
      } 
      if((int)event.getNativeKeyCode()==96) 
      { 
       code="Numpad 0"; 
      } 
      if((int)event.getNativeKeyCode()==97) 
      { 
       code="Numpad_1"; 
      } 
      if((int)event.getNativeKeyCode()==98) 
      { 
       code="Numpad_2"; 
      } 
      if((int)event.getNativeKeyCode()==99) 
      { 
       code="Numpad_3"; 
      } 
      if((int)event.getNativeKeyCode()==100) 
      { 
       code="Numpad_4"; 
      } 
      if((int)event.getNativeKeyCode()==101) 
      { 
       code="Numpad_5"; 
      } 
      if((int)event.getNativeKeyCode()==102) 
      { 
       code="Numpad_6"; 
      } 
      if((int)event.getNativeKeyCode()==103) 
      { 
       code="Numpad_7"; 
      } 
      if((int)event.getNativeKeyCode()==104) 
      { 
       code="Numpad_8"; 
      } 
      if((int)event.getNativeKeyCode()==105) 
      { 
       code="Numpad_9"; 
      } 
      if((int)event.getNativeKeyCode()==106) 
      { 
       code="Multiply"; 
      } 
      if((int)event.getNativeKeyCode()==107) 
      { 
       code="Add"; 
      } 
      if((int)event.getNativeKeyCode()==109) 
      { 
       code="Subtract"; 
      } 
      if((int)event.getNativeKeyCode()==110) 
      { 
       code="Decimal"; 
      } 
      if((int)event.getNativeKeyCode()==111) 
      { 
       code="Divide"; 
      } 
      if((int)event.getNativeKeyCode()==8) 
      { 
       code="BackSpace"; 
      } 
      if((int)event.getNativeKeyCode()==9) 
      { 
       code="Tab"; 
      } 
      if((int)event.getNativeKeyCode()==16) 
      { 
       code="Shift"; 
      } 
      if((int)event.getNativeKeyCode()==17) 
      { 
       code="Control"; 
      } 
      if((int)event.getNativeKeyCode()==20) 
      { 
       code="Caps_Lock"; 
      } 
      if((int)event.getNativeKeyCode()==27) 
      { 
       code="ESC"; 
      } 
      if((int)event.getNativeKeyCode()==32) 
      { 
       code="Space"; 
      } 
      if((int)event.getNativeKeyCode()==33) 
      { 
       code="Page_Up"; 
      } 
      if((int)event.getNativeKeyCode()==34) 
      { 
       code="Page_Down"; 
      } 
      if((int)event.getNativeKeyCode()==35) 
      { 
       code="End"; 
      } 
      if((int)event.getNativeKeyCode()==36) 
      { 
       code="Home"; 
      } 
      if((int)event.getNativeKeyCode()==37) 
      { 
       code="Left_Arrow"; 
      } 
      if((int)event.getNativeKeyCode()==38) 
      { 
       code="Up_Arrow"; 
      } 
      if((int)event.getNativeKeyCode()==39) 
      { 
       code="Right_Arrow"; 
      } 
      if((int)event.getNativeKeyCode()==40) 
      { 
       code="Down_Arrow"; 
      } 
      if((int)event.getNativeKeyCode()==45) 
      { 
       code="Insert"; 
      } 
      if((int)event.getNativeKeyCode()==46) 
      { 
       code="Delete"; 
      } 
      if((int)event.getNativeKeyCode()==144) 
      { 
       code="Num_Lock"; 
      } 
      if((int)event.getNativeKeyCode()==145) 
      { 
       code="ScrLk"; 
      } 
      if((int)event.getNativeKeyCode()==186) 
      { 
       code=";"; 
      } 
      if((int)event.getNativeKeyCode()==187) 
      { 
       code="="; 
      } 
      if((int)event.getNativeKeyCode()==189) 
      { 
       code="-"; 
      } 
      if((int)event.getNativeKeyCode()==191) 
      { 
       code="/"; 
      } 
      if((int)event.getNativeKeyCode()==192) 
      { 
       code="`"; 
      } 
      if((int)event.getNativeKeyCode()==219) 
      { 
       code="["; 
      } 

      if((int)event.getNativeKeyCode()==221) 
      { 
       code="]"; 
      } 
      if((int)event.getNativeKeyCode()==222) 
      { 
       code="'"; 
      } 
      if((int)event.getNativeKeyCode()==188) 
      { 
       code=","; 
      } 
      if((int)event.getNativeKeyCode()==190) 
      { 
       code="."; 
      } 
      if((int)event.getNativeKeyCode()==191) 
      { 
       code="/"; 
      } 

回答

2

Keycodes類,它提供了可以用來代替的常量

例如:

switch (event.getNativeKeyCode()) { 
    case KeyCodes.ENTER: break; 
    case KeyCodes.KEY_P: break; 
} 
+0

感謝您的答覆。但不幸的是,Keycodes並沒有提供所有按鈕,只有15或20個按鈕,我需要獲得鍵盤上的所有按鈕甚至是Numpad的按鍵文字......但令我失望的是,GWT並沒有不包含awt.event的JRE :(:(任何建議???? – Islam 2011-04-24 22:38:49

+0

你只能使用JRE的一個非常小的子集,因爲Java代碼被編譯成Javascript。 – helpermethod 2011-04-24 23:23:36

+0

我不明白你的觀點,你能解釋一下嗎? – Islam 2011-04-25 11:44:49

1

我不完全明白你的意思,但它可能只是你使用錯誤的關鍵事件。如果我回想一下瀏覽器keydown或按鍵是否提供了不同的東西,則可以給其他字符編碼。

1

基本上,keydown/keyup事件是用於「鍵」,而按鍵用於「可打印的字符」。如果你想要「字符」,那麼改用KeyPressHandler。 Firefox會觸發太多的事件(即使是不可打印的字符),但是您可以很容易地知道,因爲charCode將爲0.

是否有任何理由確實想要在keyup中執行此操作?

+0

真的,即使在按鍵事件中,我只能得到一些關鍵代碼的可打印字符不全,事實上我不確定他們檢索鍵碼的字符串....例如,當我按下鍵盤輸入我有一個字符串s其中包含一個字符串輸入?? – Islam 2011-04-27 18:20:22

+0

對不起,我沒有看到/讀取代碼片段。首先,我會使用'switch ... case'(或者甚至可能是一個數組 - 因爲數組在JS或者Map中稀疏)而不是'if ... else if'的河流,那麼你會注意到大多數鍵碼映射到它們代表的鍵的ASCII碼(鍵碼65 ==「A」,其碼點是...... 65!) – 2011-04-29 18:58:34