3

我有一个组合框,当用户键入时,值是从 Web 服务加载的。如果没有找到值,我想将组合框重置为空值。不使用 web 服务的固定 2 项的示例:

ComboBox comboBox = new ComboBox();
comboBox.addItem("First item");
comboBox.addItem("Second item");
comboBox.setNullSelectionAllowed(true);
comboBox.setInputPrompt("Select an item:");
comboBox.select("First item");

当我尝试输入输入提示“第三”然后单击离开以松开焦点时,“第一项”保持选中状态。

当我试图通过手动调用comboBox.select(null)or来覆盖此行为comboBox.select("")comboBox.setValue(null),仍然选择“第一项”。对我来说,这听起来像是一个组合框错误,但也许有人知道解决方法。

4

3 回答 3

3

作为快速解决方案,您可以使用此代码。只需将空元素添加到您的组合框中,然后在模糊或您需要的任何操作上选择它。

final ComboBox comboBox = new ComboBox();
comboBox.addItem("");
comboBox.setNullSelectionItemId(comboBox.getItem(""));

comboBox.addItem("First item");
comboBox.addItem("Second item");
comboBox.setNullSelectionAllowed(true);
comboBox.setInputPrompt("Select an item:");
comboBox.select("First item");

comboBox.addListener(new BlurListener() {

@Override
public void blur(final BlurEvent event) {
        comboBox.setValue("");
    }
});
于 2012-12-06T12:36:25.803 回答
0

将以下行添加到您的代码中:

combobox.setImmediate(true);

这将显示选定的值,而不是前一个值。

于 2014-07-16T12:25:05.807 回答
0

由于removeAllItems()不适用于combobox,您可以删除单个项目以获得相同的效果。

例如:

//get state combos ids    

列出 stateIDs = (List) state.getItemIds();

for(int i=0;i<stateIDs.size();i++){
    state.removeItem(stateIDs.get(i));
}
于 2016-05-25T05:59:02.337 回答