java - verifyListener 和 FocusListener 之间的冲突

标签 java swt listener

有一个 SWT 文本框。我正在为其设置默认文本。

  1. 设置焦点监听器,以便当焦点位于文本框上时,删除默认文本。

  2. 设置验证监听器以确保仅输入字母。

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

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);
     }
 });

最佳答案

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

因此,您可以使用 setMessage("Default"); ,而不是使用 setText("Default") 和焦点监听器。

验证监听器应该可以正确使用它。

关于java - verifyListener 和 FocusListener 之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38811828/

相关文章:

java - 如何在 SWT 对象上调用 Objective-C 方法?

java - 在显示最小化的 SWT 中隐藏 ON_TOP shell

SWT 中的 Java 编程

java - 为什么 UtteranceProgress Listener 不会在 Text to Speech 上被调用?

android - 为帧动画设置监听器

java - 在java中使用枚举检测卡类型时遇到问题

java - 为什么消息显示 "To view the content on this page,Please click here to install JAVA"?

java - 无内存屏障的乱序写入 : the only possible cause of Data Race?

java - Android:带有变量的 ShowDialog

android - 单击 Android 按钮中的监听器不起作用