java - 在 SWT 中验证文本并尝试清除它但不起作用

标签 java text swt

我正在尝试验证 SWT 中的文本仅允许二进制数字并且它可以工作,但我的问题是我有一个需要重置字段的按钮,但它不起作用。

这是代码

DACMUX.addVerifyListener(new VerifyListener() {

            public void verifyText(VerifyEvent e) {
                e.doit = false;

                char myChar = e.character;
                if (myChar == '1' || myChar == '0' || myChar == '\b'){
                    e.doit = true;
                }
            }
        });

reset.addSelectionListener(new SelectionListener() {

            @Override
            public void widgetSelected(SelectionEvent e) {
            DACMUX.setText(""); 

            }

            @Override
            public void widgetDefaultSelected(SelectionEvent e) {
                // TODO Auto-generated method stub

            }
        });

最佳答案

您遇到的有趣案例。我花了一段时间才弄清楚。

对,所以这里是:调用 setText("") 后,将触发 VerifyListener。它会检查您的状况并验证为 false,因此不会发生任何变化。

要使其正常工作,您需要在 if 中添加一个额外的 OR 情况,以检查 Event#text 是否等于 "" 。当您调用 setText("") 时就会出现这种情况。它不会打乱你的其他逻辑。

所以这是有效的if:

if (myChar == '1' || myChar == '0' || myChar == '\b' || e.text.equals(""))
{
    e.doit = true;
}

关于java - 在 SWT 中验证文本并尝试清除它但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23028722/

相关文章:

java - Eclipse 自定义 java 编译器

ruby - 使用 vim,是否有命令自动换行粘贴文本?

unity3d - 以相反顺序显示行的文本组件

java - eclipse无法从java源生成设计 View

java - 如何在 CheckboxTreeviewer 中初始检查元素

Java 通过使用比较器增加长度来对字符串数组进行排序

java - Jframe 中 JPanel 的随机放置

java - 如何使用BigDecimal增加分期利息?

c# - 检测我是否点击了文本的特定部分

java - 在 SWT 上具有透明度的 PNG 图像