如何验证 SWT 文本框以允许其中包含“*”字符?

how to validate SWT textbox to allow '*' character in it?

我正在尝试验证 SWT 文本框仅接受字母数字、“.”和“*”字符,以便用户能够输入通配符模式(例如- *.txt).

使用下面的代码我无法输入“*”字符(也可以使用键盘数字键盘中的 * 按钮)。请帮忙。

text.addVerifyListener(new VerifyListener() {
    @Override
    public void verifyText(VerifyEvent e) {
        e.doit=Character.isLetterOrDigit(e.character)
            ||e.keyCode=='.'
            ||e.keyCode=='*'
            ||e.keyCode==SWT.ARROW_LEFT
            ||e.keyCode==SWT.ARROW_RIGHT
            ||e.keyCode==SWT.BS;

    }
});

您正在针对字符测试 keyCode 字段 - 键码值通常与字符值不同。所以使用:

|| e.character == '.'
|| e.character == '*'

或者如果您只想允许键盘。 * 使用:

|| e.keyCode == SWT.KEYPAD_DECIMAL
|| e.keyCode == SWT.KEYPAD_MULTIPLY

private void validateCharacaterspecials() {

    this.JText.addKeyListener(new KeyAdapter() {
        public void keyTyped(KeyEvent e) {
            char keyChar = e.getKeyChar();

            char c = e.getKeyChar();

            system.out.println(e.getKeyChar());

            if ("+/*-][|ª·$%&/()=?]'[!\"¿".contains(String.valueOf(c))) {
                getToolkit().beep();
                system.out.println("delete");
                e.consume();
            }

            if (Character.isLowerCase(keyChar)) {
                e.setKeyChar(Character.toUpperCase(keyChar));
            }

        }
    });

}