2011-11-13 7 views
0

を追加すると誰かが私を助けてくれるかもしれません。私はgwtに新しいと多分これはとても簡単です。クリックされたとき、私は別の何かに各ボタンをしたいが、それはdoesnのGWT 2 ButtonCellを1行に追加イベント

protected void addButtonColumn(String header, final IHasValue<Row, Button> hasVal){ 
    Column<Row, String> column = new Column<Row, String>(new TextButtonCell()) { 
     @Override 
     public String getValue(Row object) { 
      return ((Button)hasVal.getValue(object)).getText(); 
     } 
    }; 
    column.setFieldUpdater(new FieldUpdater<Row, String>() { 
     @Override 
     public void update(int index, Row object, String value) { 
      ((Button) hasVal.getValue(object)).click(); 
     } 
    }); 
    table.addColumn(column, header); 
} 

:私は、私はcelltable内の行の2ボタン、この方法では、それぞれを作成 ...これを理解するように見えることはできません仕事はありません。私はsetfieldupdaterで何かする必要があることを知っているが、私は何がわからない。

答えて

1

Button(すなわちウィジェット)を含むようにTextButtonCellのご利用には本当に多くの意味がありません - セルがデータにアクセスすることができるようにする方が簡単ではないだろう、とトリガーにValueUpdaterを使用そのデータに基づいた何らかの振る舞いは直接ですか?

セルはウィジェットではなく、ウィジェットよりもはるかに簡単です。これは、主に2つのことを意味します。彼らは描くのが速く、愚かです。これらの両方は、わずかに異なる方法で多数のデータを描画するために単一のセルインスタンスが使用された結果です。要素ごとにボタンを作成しようとしている場合、セルベースのウィジェットを使用するのは理にかなっていません。すべてをほぼ2回描画しており、両方の世界で最悪の状態になっています(コードが遅い、と連携)。

が添付ButtonClickHandlerとSを使用していませんが、他のいくつかの抽象化は、各行、またはより良いためCommandインスタンスと同様に、クリックに対処するために、行インスタンスを受け入れるハンドラのいくつかの種類がクリックされました。 FieldUpdaterインスタンスをメソッドのパラメータとして渡すことも意味があります(ではなく、Stringの代わりにIHasValueを使用しているため、モデルでウィジェットをラップする必要はありません)。

(これは直接あなたの質問に答えることはできませんが、その代わりに、うまくいけば、我々は、すべてのセルを使用する理由にはいくつかの光を当てる助けている、そしてどのように細胞を活用する最良の書き込みコードに。)

+0

感謝。役に立った私はそれを考え出した。 – Ehphan

関連する問題