2012-11-20 54 views
2

我有一個swt文本框,我已經爲其分配了一個關鍵監聽器。 我想,在文本框中的第一個字符不應該是我使用下面的代碼,空間 -如何限制用戶在swt文本框中輸入一些字符

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

       if(e.keyCode == 32){ 

       } 
      } 
     } 

現在我知道,當由用戶輸入的第一個字符是空間。 但如果上述條件是真的,那麼我怎麼能限制它進入文本框? 有什麼幫助嗎?

回答

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; 
    } 
}); 

這將防止空間的在任何情況下的開始。


*「解決方法」甚至不起作用。想想當你在第一個位置進入一個空間時,當文本已經包含一些文本時會發生什麼。這種方法不會阻止。

+0

謝謝Baz,這有很大的幫助。 –

+0

@DurgeshSahu不客氣。驗證監聽器在您知道如何使用它時非常方便。 – Baz

3

你也可以看看Text#addVerifyListener。可能是用戶已經輸入了某個值,然後將光標移動到文本的開頭並輸入一個空格。如果你想在所有情況下在文本的開頭不允許使用空格字符,你可能需要使用它。

相關問題