有一个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);
}
});发布于 2016-08-07 12:25:12
Text已经通过setMessage方法支持默认文本。
因此,与使用setText("Default")和焦点侦听器不同,您可以只使用setMessage("Default");。
验证侦听器应该正确地使用它。
发布于 2016-08-07 07:37:43
当焦点侦听器调用text.setText("")时,将调用验证侦听器。在这种情况下,e.character的值为0,因为没有添加字符。想必您的Verifier.isAlphabet方法正在为此返回false并阻止更改发生。
您的验证监听器不应该测试character值。您应该查看VerifyEvent text字段,该字段为您提供要更改的全文(您可能还需要查看start和end字段)。
https://stackoverflow.com/questions/38811828
复制相似问题