首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VerifyListener与FocusListener的冲突

VerifyListener与FocusListener的冲突
EN

Stack Overflow用户
提问于 2016-08-07 07:11:22
回答 2查看 40关注 0票数 0

有一个SWT文本框。我在它上设置一个默认文本。

  1. 设置焦点侦听器,以便当焦点位于文本框上时,默认文本将被删除。
  2. 验证监听器设置为确保只输入字母表。

但是,当将焦点设置在文本框上时,文本不会设置为空。是什么导致了这个问题?

代码语言:javascript
复制
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);
     }
 });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-07 12:25:12

Text已经通过setMessage方法支持默认文本。

因此,与使用setText("Default")和焦点侦听器不同,您可以只使用setMessage("Default");

验证侦听器应该正确地使用它。

票数 2
EN

Stack Overflow用户

发布于 2016-08-07 07:37:43

当焦点侦听器调用text.setText("")时,将调用验证侦听器。在这种情况下,e.character的值为0,因为没有添加字符。想必您的Verifier.isAlphabet方法正在为此返回false并阻止更改发生。

您的验证监听器不应该测试character值。您应该查看VerifyEvent text字段,该字段为您提供要更改的全文(您可能还需要查看startend字段)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38811828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档