Java 验证SWT中的文本并尝试将其清除,但不';行不通
我试图验证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
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很乐意帮忙。