2012-11-20 6 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도 볼 수 있습니다. 사용자가 이미 값을 입력 한 다음 커서를 텍스트의 시작 부분으로 이동하고 공백을 입력 할 수 있습니다. 원하는 경우 모든 경우에 텍스트 시작 부분에 공백 문자를 허용하지 않는 것이 좋습니다.

관련 문제