gpt4 book ai didi

java - 更新 Vaadin 7 中的 ListSelect

转载 作者:行者123 更新时间:2023-11-30 02:30:00 25 4
gpt4 key购买 nike

单击一个按钮后,我需要更新 ListSelect 的列表,但我不知道如何操作

这是我的代码:

创建列表方法

private void createListPanel() {
VerticalLayout listPanel = new VerticalLayout();
listPanel.setWidth(100f, Unit.PERCENTAGE);

queryList= new ListSelect("List Of Querys", getQueryList());
queryList.setWidth(100f, Unit.PERCENTAGE);

queryList.setNullSelectionAllowed(false);

queryList.addValueChangeListener(event -> {

selectedQuery = (String) (queryList.getValue());
String retrievedQuery = repository.getRawQuery(selectedQuery);

});

listPanel.addComponent(queryList);
panelSuperior.addComponent(listPanel);
}

getQueryList()

private List<String> getQueryList() {
return repository.getQueryNames();
}

创建按钮方法

private void CreateButton() {
Button buttonRefresh= new Button("Refresh");

buttonRefresh.addClickListener((Button.ClickEvent e) -> {
// i tried this
queryList.setContainerDataSource((Container) getQueryList());
});

buttonPanel.addComponent(button);

}

我在 CreateButton() 方法中尝试了这一行:

queryList.setContainerDataSource((Container) getQueryList())

但是我得到了

java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.vaadin.data.Container

因为这个方法需要一个容器对象

我在 Vaadin javadoc 中搜索,但找不到设置或更新 ListSelect 列表的方法

Vaadin Javadoc: Vaadin Javadoc 7.7.9 ListSelect

提前致谢

最佳答案

最简单的方法是从底层容器中删除所有项目,然后添加新项目:

Container container = queryList.getContainerDataSource();
container.removAllItems();
List<String> queries = getQueryList();
for(String query : queries) {
container.addItem(query);
}

ListSelect(String caption, Collection<?> options) 构造函数创建一个 IndexedContainer 并用您 Collection 的项目填充它。

另一个选项是绑定(bind) ListSelect到一个容器,使其能够自动跟踪更改。有关详细信息,请参阅"Collecting Items in Containers"来自 Vaadin 文档的主题。

关于java - 更新 Vaadin 7 中的 ListSelect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44539454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com