【问题标题】:Is it possible to get the keycode not tha Native keycode in GWT?是否有可能在 GWT 中获得不是本机键码的键码?
【发布时间】:2011-08-11 16:17:13
【问题描述】:

我想在我尝试过的 GWT keyUP 事件处理程序中获取键码(字符串)而不是本机键码,但我只能获取返回键的 ASCII 码的本机键码。是否可以获取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="/";
            }

【问题讨论】:

    标签: gwt


    【解决方案1】:

    参见Keycodes 类。它提供了您可以使用的常量。

    例子:

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

    【讨论】:

    • 感谢您的回复。但不幸的是,Keycodes 并没有提供所有按钮,只有大约 15 或 20 个按钮我需要获取键盘中所有按钮的关键文本,甚至是数字键盘....但是什么令我失望的是 GWT 不包含 awt.event 的 JRE :(:( 任何建议????
    • 您只能使用非常小的 JRE 子集,因为 Java 代码会被编译为 Javascript。
    • 对于字母,您可以使用:例如'A'或'a'
    【解决方案2】:

    我不完全明白您的意思,但可能只是您使用了错误的按键事件。如果我记得在某些浏览器上的 keydown 或者它是 keypress 提供不同的东西,一个给其他字符的代码。

    【讨论】:

      【解决方案3】:

      基本上,keydown/keyup 事件用于“键”,而 keypress 用于“可打印字符”。如果您想要“字符”,请改用 KeyPressHandler。 Firefox 会触发太多事件(即即使是不可打印的字符),但您可以轻松判断,因为 charCode 将为 0。

      你有什么理由真的想在 keyup 中这样做吗?

      【讨论】:

      • 真的,即使在按键事件中,我也只能得到一些键码的可打印字符,而不是全部,实际上我不确定它们是否检索键码的字符串......例如当我按 Enter 键我得到一个包含字符串的字符串 enter??
      • 对不起,我没有看到/阅读代码 sn-p。首先,我会使用switch...case(或者甚至可能是一个数组——因为数组在JS中是稀疏的——或者Map)而不是if...else if,然后你会注意到大多数键码映射到它们所代表的键的 ASCII 码(键码 65 == "A",其代码点是...... 65!)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多