2

我有一个 swt 文本框,我用它分配了一个关键侦听器。我希望文本框中的第一个字符不应该是我使用以下代码的空格 -

  textCSVFileName.addKeyListener(new KeyAdapter(){
        public void keyPressed(KeyEvent e){
            if(textCSVFileName.getCharCount() == 0){

                if(e.keyCode == 32){

                }
            }
        }

现在我知道用户输入的第一个字符是空格。但如果上述条件为真,那么我该如何限制它进入文本框?有什么帮助吗?

4

2 回答 2

3

你也可以看看Text#addVerifyListener。可能是用户已经输入了一些值,然后将光标移动到文本的开头并输入了一个空格。如果您想要在所有情况下都不允许文本开头的空格字符,您可能需要使用它。

于 2012-11-20T07:32:11.440 回答
3

虽然这个问题是用一个肮脏的解决方法*来回答的,但我建议看一下这个SWT.Verify事件,听一下,并防止在第一个位置出现空格:

final Text textField = new Text(shell, SWT.BORDER);

textField.addListener(SWT.Verify, new Listener() {

    @Override
    public void handleEvent(Event e) {
        // get old text and create new text by using the Event.text
        final String oldS = textField.getText();
        String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);

        if(newS.length() > 0 && newS.charAt(0) == ' ')
            e.doit = false;
    }
});

无论如何,这将防止开头出现空格。


*“解决方法”甚至不起作用。想想当你在第一个位置输入一个空格时会发生什么,当文本已经包含一些文本时。这种方法不会阻止这种情况。

于 2012-11-20T07:47:48.363 回答