我正在尝试验证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
}
});
答案 0 :(得分:2)
有趣的案例你到了那里。我花了一段时间才弄明白。
是的,所以这里是:VerifyListener
在您致电setText("")
后被解雇。它会检查您的状况并验证为false
,因此没有任何变化。
要使其有效,您需要向if
添加一个额外的OR案例,以检查Event#text
是否等于""
。当您致电setText("")
时就是这种情况。它不会搞砸你的其他逻辑。
所以这是工作if
:
if (myChar == '1' || myChar == '0' || myChar == '\b' || e.text.equals(""))
{
e.doit = true;
}