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

时间:2014-04-12 09:44:05

标签: 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

            }
        });

1 个答案:

答案 0 :(得分:2)

有趣的案例你到了那里。我花了一段时间才弄明白。

是的,所以这里是:VerifyListener在您致电setText("")后被解雇。它会检查您的状况并验证为false,因此没有任何变化。

要使其有效,您需要向if添加一个额外的OR案例,以检查Event#text是否等于""。当您致电setText("")时就是这种情况。它不会搞砸你的其他逻辑。

所以这是工作if

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