0

Textの入力を確認したいのですが、値が0から100の間であることを確認してください。しかし、何らかの理由で使用できませんVerifyEvent。次のように、私はパブリックボイドで「チェック」値を取得したいのですが、handleEvent(Event event)どうすればよいですか?

control.addListener (SWT.Verify, new Listener () {
    public void handleEvent(VerifyEvent e) {
        // TODO Auto-generated method stub
        Text text = (Text)e.getSource();
        String t = text.getText();
        String check = t.substring(0, e.start) + e.text + t.substring(e.end);
        e.doit = validateInput(check);
    }
    @Override
    public void handleEvent(Event event) {
        // TODO Auto-generated method stub
    }
});
4

1 に答える 1

0

さて、を追加したいのですが、 withをSWT.Verify使用できないため、にアクセスできません。ただし、手動で追加するため、ソースがわかります。VerifyListenerVerifyEventevent.getSource()Listener

final Text textField = new Text(shell, SWT.BORDER);
textField.addListener(SWT.Verify, new Listener() {
    @Override
    public void handleEvent(Event e) {
        // You can access textField, since it is final
        final String oldS = textField.getText();
        String newS = oldS.substring(0, e.start) + e.text + oldS.substring(e.end);

        boolean isValid = true;

        if("".equals(newS))
        {
        }
        else
        {
            try
            {
                // first check, if text really is a number
                float value = Float.parseFloat(newS);

                // then check if it's between 0 and 100
                if(value < 0 || 100 < value)
                    isValid = false;
            }
            catch(NumberFormatException ex)
            {
                isValid = false;
            }
        }

        // if text is not a valid number, prevent user input
        if(!isValid)
            e.doit = false;
    }
});

したがって、にを追加ListenertextFieldます。したがって、ソースgetSource()であるため、メソッドは必要ありません...textField

于 2012-08-23T07:34:30.330 に答える