2011-04-23 21 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

相关问题