2009-07-08 4 views
0

私はGWT 1.6を使用しています。テーブルセルとして使用されるパネル内のボタンでイベントを取得する

ボタンとラベルを含むパネルを作成していますが、そのパネルをFlexTableのセルの1つとして追加します。

ボタンはクリックイベントを受信して​​いません。私はテーブルがどのCellがクリックされたかをサポートしているが、この場合、Mouseイベントをセル内のさまざまなウィジェットに伝播させたい。どのようにそれを行う上の任意のアイデアですか?

答えて

1

ええ、私もそれを打つ - テーブルのウィジェットはイベントを受け取ることはありません。あなたはおそらくそのような何かを始めることができ


FixedWidthGrid dataTable = createDataTable(); 
... 
dataTable.addTableListener(new TableListener() { 

    public void onCellClicked(SourcesTableEvents sender, int row, int cell) { 
     storyViewer.showStory(table.getRowValue(row)); 
    } 

}); 

、その後、プログラムでクリックの外観を作るためにあなたのボタンウィジェットにイベントを送信:私はこのようなコードを使用して終了しました。

+0

最終的に、セルに複数のクリック可能なウィジェットが表示されます。私が実装しようとしているのは、ソートするボタンとフィルタを設定する別のボタンを持つテーブルヘッダです。だから私は、ユーザーがセル内で実際にクリックしていたウィジェットを知る必要があります。 – mjeffw

+0

Hmmm。そのため、クリックの位置を知る必要があります。それがそこにあるかどうかは分かりません。あなたはFixedWidthGridを使用していますか?ソートをサポートしています。 –

+0

私はFixedWidthGridを見たことがありません - 私はいくつかのサードパーティのライブラリでそれを仮定していますか? – mjeffw

0

あなたのテーブルの大きさがわかっている場合は、代わりにグリッドを使用してください。すべてのウィジェットがイベントを受け取ります。私はこれをして、自分のソート可能なテーブルを作成しました。

+0

もう一つのことです。 FlexTable内のウィジェットはイベントを受け取らないということはどこにあるのですか?あなたのウィジェットにハンドラを追加しないかもしれませんか? – Carnell

0

Button google Classをサブクラス化し、2つの追加引数(int col、int row)を持つコンストラクタを追加する必要があります。例:

public class RuleButton extends Button { 

private int row; 
private int col; 

public RuleButton(String html, ClickListener listener, int row, int col) { 
    super(html, listener); 
    setRow(row); 
       setCol(col); 
} 
     // getters and setters for row and col attributes. 
} 

ボタンを追加するときは、このコンストラクタを呼び出して、行とカラムのインデックスを渡します。

関連する問題