有一个SWT文本框。我正在设置默认文本。
设置焦点侦听器,以便在焦点位于文本框时,删除默认文本。
设置验证侦听器以确保只输入字母。
但是,在文本框中设置焦点时,文本不会设置为空。是什么导致了这个问题?
final Text text = new Text(parent, SWT.NONE);
text.setText("Default");
text.addFocusListener( new FocusAdapter() {
@Override
public void focusGained(FocusEvent event) {
if("Default".equals(text.getText())){
text.setText("");
}
}
});
text.addVerifyListener( new VerifyListener() {
@Override
public void verifyText(VerifyEvent e) {
e.doit = Verifier.isAlphabet(e.character);
}
});
答案 0 :(得分:2)
Text
已通过setMessage
方法支持默认文字。
因此,您可以使用setText("Default")
而不是使用setMessage("Default");
和焦点监听器。
验证侦听器应该可以正常使用它。
答案 1 :(得分:0)
当您的焦点侦听器调用text.setText("")
时,将调用验证侦听器。在这种情况下,e.character
的值为0,因为没有添加字符。据推测,您的Verifier.isAlphabet
方法正在为此返回false
并阻止更改发生。
您的验证侦听器不应测试character
值。您应该查看VerifyEvent
text
字段,该字段可以为您提供更改的全文(您可能还需要查看start
和end
字段。