Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以通过键侦听器检查SWT文本中粘贴的文本是否具有特殊字符?_Java_Swt_Jface - Fatal编程技术网

Java 是否可以通过键侦听器检查SWT文本中粘贴的文本是否具有特殊字符?

Java 是否可以通过键侦听器检查SWT文本中粘贴的文本是否具有特殊字符?,java,swt,jface,Java,Swt,Jface,我有一个SWT文本,它应该只接受在此范围内的字符:[a-z][a-z][0-9]。 为此,我在文本中添加了一个KeyListener,下面是代码 Pattern pattern = Pattern.compile("[a-zA-Z0-9]+"); @Override public void keyPressed(KeyEvent event) { String enteredCharacterInStr = String.valueOf(event.character); b

我有一个SWT文本,它应该只接受在此范围内的字符:[a-z][a-z][0-9]。 为此,我在文本中添加了一个KeyListener,下面是代码

Pattern pattern = Pattern.compile("[a-zA-Z0-9]+");

@Override
public void keyPressed(KeyEvent event) 
{
    String enteredCharacterInStr = String.valueOf(event.character);
    boolean isAlphaNumeric = pattern.matcher(enteredCharacterInStr).find();

    if(event.keyCode == SWT.ARROW_LEFT ||
        event.keyCode == SWT.ARROW_RIGHT ||
        event.keyCode == SWT.BS || 
        event.keyCode == SWT.DEL )
    {
        event.doit = true;
    }
    else if(isAlphaNumeric)
    {
        event.doit = true;
    }
    else if(event.stateMask == SWT.CTRL && (event.keyCode == 'a' ||
                                            event.keyCode == 'c' ||
                                            event.keyCode == 'v' ||
                                            event.keyCode == 'x' ) )
    {
        event.doit = true;
    }
    else
    {
        event.doit = false;
    }

}
上述代码将在用户不输入特殊字符的情况下工作,但在用户复制包含特殊字符的文本并粘贴到文本中时失败

是否可以通过KeyListener实现此目的?

您可以使用,此示例仅允许1-8之间的数字:

    text.addVerifyListener(new VerifyListener() {
        @Override
        public void verifyText(VerifyEvent event) {
            char[] charArray = event.text.toCharArray();
            for (char testChar : charArray) {
                if (testChar <= '0' || testChar >= '9') {
                    event.doit = false;
                    return;
                }
            }
        }
    });

是否要过滤掉特殊字符,或者如果粘贴的文本包含特殊字符,则停止插入?
    text.addVerifyListener(new VerifyListener() {
        @Override
        public void verifyText(VerifyEvent event) {
            event.text = event.text.replaceAll("[^A-Za-z0-9]", "");
        }
    });