首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >char到KeyEvent整型

char到KeyEvent整型
EN

Stack Overflow用户
提问于 2014-07-04 11:21:53
回答 1查看 656关注 0票数 0

希望将字符转换为整数,以便与awt robot的按键控件一起使用。我现在有了这个解决方案,但它很长,很乱,我需要添加每个可能输入的键,这是很多的。有没有更简单或更整洁的方法来完成这项任务?谢谢!

(我现在使用+10000表示大写字母,我将在键入字符的同时运行检查,如果为num>10000,按住shift键并从数字中删除10000 )

代码语言:javascript
复制
public int charToNum(char character) {
    switch (character) {
        case 'a': return(KeyEvent.VK_A);
        case 'b': return(KeyEvent.VK_B);
        case 'c': return(KeyEvent.VK_C);
        case 'd': return(KeyEvent.VK_D);
        case 'e': return(KeyEvent.VK_E);
        case 'f': return(KeyEvent.VK_F);
        case 'g': return(KeyEvent.VK_G);
        case 'h': return(KeyEvent.VK_H);
        case 'i': return(KeyEvent.VK_I);
        case 'j': return(KeyEvent.VK_J);
        case 'k': return(KeyEvent.VK_K);
        case 'l': return(KeyEvent.VK_L);
        case 'm': return(KeyEvent.VK_M);
        case 'n': return(KeyEvent.VK_N);
        case 'o': return(KeyEvent.VK_O);
        case 'p': return(KeyEvent.VK_P);
        case 'q': return(KeyEvent.VK_Q);
        case 'r': return(KeyEvent.VK_R);
        case 's': return(KeyEvent.VK_S);
        case 't': return(KeyEvent.VK_T);
        case 'u': return(KeyEvent.VK_U);
        case 'v': return(KeyEvent.VK_V);
        case 'w': return(KeyEvent.VK_W);
        case 'x': return(KeyEvent.VK_X);
        case 'y': return(KeyEvent.VK_Y);
        case 'z': return(KeyEvent.VK_Z);
        case 'A': return(KeyEvent.VK_A);
        case 'B': return(10000 + KeyEvent.VK_B);
        case 'C': return(10000 + KeyEvent.VK_C);
        case 'D': return(10000 + KeyEvent.VK_D);
        case 'E': return(10000 + KeyEvent.VK_E);
        case 'F': return(10000 + KeyEvent.VK_F);
        case 'G': return(10000 + KeyEvent.VK_G);
        case 'H': return(10000 + KeyEvent.VK_H);
        case 'I': return(10000 + KeyEvent.VK_I);
        case 'J': return(10000 + KeyEvent.VK_J);
        case 'K': return(10000 + KeyEvent.VK_K);
        case 'L': return(10000 + KeyEvent.VK_L);
        case 'M': return(10000 + KeyEvent.VK_M);
        case 'N': return(10000 + KeyEvent.VK_N);
        case 'O': return(10000 + KeyEvent.VK_O);
        case 'P': return(10000 + KeyEvent.VK_P);
        case 'Q': return(10000 + KeyEvent.VK_Q);
        case 'R': return(10000 + KeyEvent.VK_R);
        case 'S': return(10000 + KeyEvent.VK_S);
        case 'T': return(10000 + KeyEvent.VK_T);
        case 'U': return(10000 + KeyEvent.VK_U);
        case 'V': return(10000 + KeyEvent.VK_V);
        case 'W': return(10000 + KeyEvent.VK_W);
        case 'X': return(10000 + KeyEvent.VK_X);
        case 'Y': return(10000 + KeyEvent.VK_Y);
        case 'Z': return(10000 + KeyEvent.VK_Z);
        case '!': return(KeyEvent.VK_EXCLAMATION_MARK);
        case ' ': return(KeyEvent.VK_SPACE);   
        default: System.out.println("Test"); return 0;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2014-07-04 12:02:36

查看源代码,KeyEvent字段的值为

代码语言:javascript
复制
public static final int VK_A = 65;
public static final int VK_B = 66;
...
public static final int VK_Z = 90;

它们只是A-Z的ascii值。您可以将char转换为一个int,以获得它的ascii值,这意味着您可以这样做。

代码语言:javascript
复制
public static int charToNum(char inputChar) {
    if(inputChar == '!') {
        return(KeyEvent.VK_EXCLAMATION_MARK);
    } else if (inputChar == ' ') {
        return(KeyEvent.VK_SPACE);
    }

    if (Character.isUpperCase(inputChar)) {
        return (int) inputChar + 10000;
    } else {
        return (int) inputChar - 32;
    }
}

但是,任何非字母字符都必须有自己的特殊情况,如感叹号和空格。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24566230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档