9

我有以下代码:

public Button getBtnSubmit(com.vaadin.ui.Button.ClickListener l) {
    if (null != l) {
        btnSubmit.addListener(l);
    }
    return btnSubmit;
}

public Table getTableCompany(HeaderClickListener hl) {
    if (null != hl) {
        tableCompany.addListener(hl);
    }
    return tableCompany;
}

我想添加一个listener当我在表中选择一个(不同的)行时触发的。
这样我就可以用表数据刷新一些其他控件,我应该使用哪个监听器?

4

6 回答 6

16

addListener现在已弃用。请改用以下内容。

table.addItemClickListener(new ItemClickEvent.ItemClickListener() {
    @Override
    public void itemClick(ItemClickEvent itemClickEvent) {
        System.out.println(itemClickEvent.getItemId().toString());
    }
});
于 2013-11-21T17:13:52.817 回答
5

我会去ItemClickListener

 table.addListener(new ItemClickEvent.ItemClickListener() {

            @Override
            public void itemClick(ItemClickEvent event) {
               //implement your logic here
            }
        });

编辑:对于 Vaadin 7+,使用addItemClickListener方法而不是addListener.

于 2013-02-04T12:48:51.897 回答
1

如果您使用 ValueChangeListener 不要忘记设置

  table.setImmediate(true);

这意味着浏览器将立即报告选择的更改。如果你不设置这个,你的监听器不会被调用。

于 2014-05-05T08:15:52.990 回答
1

你想添加一个ValueChangeListener

于 2013-02-04T12:41:52.780 回答
0

阅读https://vaadin.com/book/-/page/components.table.html,第 5.15.1 节“选择表中的项目”。您想添加一个 Property.ValueChangeListener

于 2013-06-01T14:55:32.463 回答
0

其中许多答案既正确又不正确。

如果您需要获取响应单击的选定项目,请注册一个 ValueChangeListener。调用 getValue() 以从ItemClickListener检索选择可能是 MultiSelect 列表中的一项。例如,项目集不会包含/排除触发回调的项目。但是,您将不会引用单击的项目。

如果你只是想响应一个 item 的点击,而不需要考虑当前的选择状态,注册一个 ItemClickListener代替。这样,您将知道实际单击了哪个项目。

于 2017-08-12T14:06:11.717 回答