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を追加します

于 2013-02-04T12:41:52.780 に答える
1

ValueChangeListenerを使用する場合は、設定することを忘れないでください

  table.setImmediate(true);

これは、ブラウザが選択の変更をすぐに報告することを意味します。これを設定しない場合、リスナーは呼び出されません。

于 2014-05-05T08:15:52.990 に答える
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リストで1アイテム遅れる可能性があります。たとえば、アイテムのセットには、コールバックをトリガーするアイテムが含まれたり除外されたりすることはありません。ただし、クリックされたアイテムへの参照はありません。

アイテムのクリックに応答するだけで、現在の選択状態を考慮する必要がない場合は、代わりにItemClickListenerを登録してください。このようにして、実際にクリックされたアイテムを知ることができます。

于 2017-08-12T14:06:11.717 に答える