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 に答える