2017-08-15 4 views
1

私はいくつかの行と列を持つvaadinテーブルを持っています。どのようにして1つの特定の列のセルをクリック可能にすることができますか?vaadinテーブルセルのクリックリスナーの作成方法

目的:マウスを動かす代わりに、その1つの特定の列のセルをクリックするとツールヒントが表示されます。セルにはラベルとしてテキストが含まれています。

私が持っているのはテーブルだけです(誰も助けてくれません)ので、私はコードを投稿しません。

+0

WICHのバージョンにあった、あなたが使用していますか? – Shirkam

+0

私はvaadin 7.7.10を使用しています – user1631306

+0

あなたはここで言うことを使用することがありますhttps://github.com/vaadin/vaadin-grid/issues/407彼らはそれだけでは、セルをクリックすることはできませんが、それらはあなたの問題を解決しています。 – Shirkam

答えて

1

Gridの特定のセルに現在clickListenerを添付することはできません。これは、このdiscussionに服従しています。彼らは、細胞は要素ではなくデータの表現であると言い、クリックすることはできません。

代わりに、アドオンLabelButtongithub)のようなセル内にコンポーネントを追加するか、単にButtonを追加して、ボーダーレスにすることができます。

PDは:ボーナスとして、私はGridButtonを追加するためのコードを追加している:

Vaadin 7

RendererClickListener clickListener = new RendererClickListener() { 
    private static final long serialVersionUID = 1L; 

    @Override 
    public void click(RendererClickEvent event) { 
     //Do your actions 
    } 
}; 
ButtonRenderer renderer = new ButtonRenderer(ownerClickListener, ""); 
grid.getColumn("columnName").setRenderer(renderer); 

を使用することになる。このアプローチに代わりますプロパティージェネレーターはGeneratedPropertyContainerのようになり、ボタンをレンダリングするにはComponentRendererhere)のようなアドオンを使用します。私の答えの他の例here ..

Vaadin 8.1

Vaadin 8.1は現在、内蔵しており、Gridで使用するためComponentRendererWhat’s Newの最初の項目「グリッド内のコンポーネント」を参照してください。一例として、

grid.addComponentColumn(person -> { 
    Button button = new Button("Click me!"); 
    button.addClickListener(click -> 
     Notification.show("Clicked: " + person.toString())); 
    return button; 
}); 
// make sure the buttons fit in the cells of the Grid 
grid.setBodyRowHeight(40); 

GridドキュメントVaadinの in Vaadin page

関連する問題