Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GWT中清除模糊提示框_Gwt_Suggestbox - Fatal编程技术网

在GWT中清除模糊提示框

在GWT中清除模糊提示框,gwt,suggestbox,Gwt,Suggestbox,我在GWT有一个建议箱。当它模糊时,有没有办法清除它(除非用户做出选择,在这种情况下应该执行操作)?使用ValueChangeHandler尝试此方法: 注意:ValueChange事件与Blue事件具有相同的行为,但只有在建议框中的值发生更改时才会触发该事件 class MyMultiWordSuggestOracle extends MultiWordSuggestOracle { private Set<String> values = new HashSet<S

我在GWT有一个建议箱。当它模糊时,有没有办法清除它(除非用户做出选择,在这种情况下应该执行操作)?

使用
ValueChangeHandler
尝试此方法:

注意
ValueChange
事件与
Blue
事件具有相同的行为,但只有在
建议框中的值发生更改时才会触发该事件

class MyMultiWordSuggestOracle extends MultiWordSuggestOracle {
    private Set<String> values = new HashSet<String>();

    @Override
    public void add(String value) {
        super.add(value);
        values.add(value);
    }

    @Override
    public void clear(){
        super.clear();
        values.clear();
    }

    public boolean contains(String value) {
        return values.contains(value);
    }
}
MyMultiWordSuggestOracle类扩展了MultiWordSuggestOracle{ 私有集值=新HashSet(); @凌驾 公共空添加(字符串值){ 超级增值; 增加(价值); } @凌驾 公共空间清除(){ super.clear(); value.clear(); } 公共布尔包含(字符串值){ 返回值。包含(值); } }
您的代码是:

    final MyMultiWordSuggestOracle oracle = new MyMultiWordSuggestOracle();
    oracle.add("A");
    oracle.add("AB");        
    oracle.add("BCD");
    oracle.add("BCDE");        

    final SuggestBox suggestionBox = new SuggestBox(oracle);
    suggestionBox.addValueChangeHandler(new ValueChangeHandler<String>() {

        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            if (!oracle.contains(event.getValue())) {
                suggestionBox.setValue("");
            }
        }
    });
final MyMultiWordSuggestOracle oracle=新建MyMultiWordSuggestOracle();
甲骨文。添加(“A”);
甲骨文。添加(“AB”);
甲骨文。添加(“BCD”);
甲骨文。添加(“BCDE”);
final SuggestBox SuggestBox=新的SuggestBox(oracle);
suggestionBox.addValueChangeHandler(新的ValueChangeHandler(){
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
如果(!oracle.contains(event.getValue())){
suggestionBox.setValue(“”);
}
}
});
添加一个模糊处理程序:

suggestionBox.getValueBox().addBlurHandler(new BlurHandler() {

    @Override
    public void onBlur(BlurEvent event) {
        // your code goes here
    }
});

你的链接不是这样说的。您将其与getTextBox()混淆。不幸的是,单击下拉列表中的项目时,这会导致SuggestBox丢失。这可能是由于(!oracle.equals(event.getValue())中区分大小写的值造成的。打印
event.getValue()
的值。我不这么认为。它工作得很好。请分享您的部分代码好吗?根据文档,oracle是一个SuggestionRacle,而event.getValue()只能返回字符串。您使用的是
com.google.gwt.user.client.ui.MultiwordSuggestionOracle