Java 如何在表中以编程方式选择插入的行?
如何以编程方式选择插入的表行?该表绑定到BeanContainer,每次单击add按钮时,我都希望插入一行并使其在不单击ItemClick的情况下可选择 我看到了SQLContainer的另一个示例,但它对我不起作用 下面是成功插入行的按钮的侦听器:Java 如何在表中以编程方式选择插入的行?,java,vaadin,Java,Vaadin,如何以编程方式选择插入的表行?该表绑定到BeanContainer,每次单击add按钮时,我都希望插入一行并使其在不单击ItemClick的情况下可选择 我看到了SQLContainer的另一个示例,但它对我不起作用 下面是成功插入行的按钮的侦听器: addButton.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) {
addButton.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
Object itemId = addList();
table.addItem(itemId);
table.getItem(itemId).getItemProperty("PS_SECTION").setValue(n);
table.setValue(itemId);
table.select(itemId);
table.commit();
}
});
代码如下:
@Theme("mytheme")
public class MyUI extends UI {
@Override
protected void init(VaadinRequest vaadinRequest) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
layout.setSpacing(true);
setContent(layout);
//cache the beans
ArrayList<MyBean> beans = getBeans();
BeanItemContainer container = new BeanItemContainer<>(MyBean.class, beans);
Table table = new Table();
table.setSelectable(true);
table.setImmediate(true);
table.setWidth("200px");
table.setPageLength(5);
table.setContainerDataSource(container);
//select programmatically
table.select(beans.get(1));//this is the key idea! Provide the same bean from cache, for selection.
layout.addComponent(table);
}
@WebServlet(urlPatterns = "/*", name = "MyUIServlet", asyncSupported = true)
@VaadinServletConfiguration(ui = MyUI.class, productionMode = false)
public static class MyUIServlet extends VaadinServlet {
}
public class MyBean {
private int id;
private String field;
public MyBean(int id, String field) {
this.id = id;
this.field = field;
}
public int getId() {
return id;
}
public String getField() {
return field;
}
}
public ArrayList<MyBean> getBeans() {
ArrayList<MyBean> beans = new ArrayList<>();
MyBean bean = new MyBean(1, "Vikrant");
beans.add(bean);
bean = new MyBean(2, "John");
beans.add(bean);
bean = new MyBean(3, "Rahul");
beans.add(bean);
return beans;
}
}您是否尝试将table.selectitemId放在table.commit之后?@defaultlocale我现在尝试了,但没有成功。你还有别的想法吗?对不起,不知道,我还没有准备好环境。我会尝试手动选择一个项目,检查table.getValue返回的内容,然后尝试模拟它。另外,请尝试在提交后放置setValue。@defaultlocale无需担心。无论如何谢谢你!我会继续找的。谢谢!这对我很有帮助