Java 验证SWT中的文本并尝试将其清除,但不';行不通

Java 验证SWT中的文本并尝试将其清除,但不';行不通,java,text,swt,Java,Text,Swt,我试图验证SWT中的文本是否只允许二进制数,但我的问题是,我有一个按钮需要重置字段,但它不起作用 这是密码 DACMUX.addVerifyListener(new VerifyListener() { public void verifyText(VerifyEvent e) { e.doit = false; char myChar = e.character; if

我试图验证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

            }
        });

你的案子很有趣。我花了一段时间才弄明白

好的,这里是这样的:
VerifyListener
在调用
setText(“”
)后被激发。它检查您的状况并验证为
false
,因此没有任何变化

要使其工作,您需要在
if
中添加一个额外的OR案例,该案例检查
事件#text
是否等于
“”
。调用
setText(“”
时就是这种情况。这不会打乱你的其他逻辑

因此,如果,这里是工作的

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

它工作得很好:)谢谢你的帮助。我试图添加一个条件,即字符为null,但不起作用。“你的想法很好。@user3526425很乐意帮忙。