【问题标题】:How to restrict user from entering some characters in swt textbox如何限制用户在 swt 文本框中输入某些字符
【发布时间】:2012-11-08 04:57:52
【问题描述】:

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

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

                if(e.keyCode == 32){

                }
            }
        }

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

【问题讨论】:

    标签: java swt


    【解决方案1】:

    虽然这个问题是用一个肮脏的解决方法*来回答的,但我建议看看 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;
        }
    });
    

    这将在任何情况下防止开头出现空格。


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

    【讨论】:

    • 谢谢 Baz,这对您有很大帮助。
    • @DurgeshSahu 不客气。当您知道如何使用验证侦听器时,它非常方便。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多