SWT ModifyListener和VerifyListener的区别

By | 2018年4月7日

它俩通常是给Text控件使用的,用户输入变化时会触发这两个事件。

VerifyListener

用于校验输入是否有效,由e.doit来确定,如果e.doit为true,则输入成功;如果e.doit为false,则不允许输入。下面的例子,不允许输入字母“s”。

comboViewer.getCombo().addVerifyListener(new VerifyListener() {
    @Override
    public void verifyText(VerifyEvent e) {
        // Prevent from inputing letter "s".
        e.doit = !"s".equals(e.text);
    }
});

ModifyListener

只要UI上显示有输入,则会触发此事件。如果同时还有VerifyListener,则在e.doit=true时,才会触发ModifyListener。也就是真正有修改,才会触发此事件。

comboViewer.getCombo().addModifyListener(new ModifyListener(){
    @Override
    public void modifyText(ModifyEvent e) {
        System.out.println("Input changed.");
    }
});