SWT字符到stateMask和KeyCode

时间:2014-06-12 13:09:43

标签: java swt

我确实有一个角色,让我们说' /'我希望它转换为keyCode和StateMask:

' /' - > StateMask = 131072,KeyCode = 55

是否有一个功能我不知道哪个可以做到这一点?

1 个答案:

答案 0 :(得分:0)

我假设您尝试在Text或类似的地方进行某种验证。

首先,关于KeyEvent s:

的小讲座

stateMask

  

生成事件时键盘修饰键和鼠标掩码的状态。

keyCode

  

键入的键的键代码,由类SWT中的键代码常量定义。当事件的字符字段不明确时,该字段包含原始字符的unicode值。例如,键入Ctrl + M或Return两者都会导致字符' \ r'但keyCode字段也将包含' \ r'当输入Return时。

在您的情况下,您似乎想要将输入的字符与/进行比较。在此方案中,stateMaskkeyCode不是必需的。只需e.character == '/'即可。这是一个例子:

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new GridLayout(1, false));

    Text text = new Text(shell, SWT.BORDER);
    text.addListener(SWT.Verify, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            if (!(e.character == '/'))
                e.doit = false;
        }
    });

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

请注意:stateMaskkeyCode的值分别在我的计算机上为047(Windows 7,英国键盘布局)。