Java 如何在表中以编程方式选择插入的行?

Java 如何在表中以编程方式选择插入的行?,java,vaadin,Java,Vaadin,如何以编程方式选择插入的表行?该表绑定到BeanContainer,每次单击add按钮时,我都希望插入一行并使其在不单击ItemClick的情况下可选择 我看到了SQLContainer的另一个示例,但它对我不起作用 下面是成功插入行的按钮的侦听器: addButton.addClickListener(new ClickListener() { @Override public void buttonClick(ClickEvent event) {

如何以编程方式选择插入的表行?该表绑定到BeanContainer,每次单击add按钮时,我都希望插入一行并使其在不单击ItemClick的情况下可选择

我看到了SQLContainer的另一个示例,但它对我不起作用

下面是成功插入行的按钮的侦听器:

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无需担心。无论如何谢谢你!我会继续找的。谢谢!这对我很有帮助