2009-07-08 19 views
0

我正在使用GWT 1.6。在用作表格單元的面板中的按鈕中獲取事件

我正在創建一個面板,其中包含一個Button和一個標籤,然後我將它添加到FlexTable作爲其單元之一。

該按鈕沒有收到任何Click事件。我發現表格支持確定單擊哪個單元格,但在這種情況下,我希望鼠標事件傳播到單元格內的各種小部件。任何想法如何做到這一點?

回答

1

是的,我也碰到過 - 表中沒有小工具會收到事件。最後我用這樣的代碼:


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

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

}); 

你也許可以用類似的東西開始,然後以編程方式將事件發送到您的按鈕控件,使點擊的出現。

+0

最終會在單元格中有多個可點擊的小部件。我想實現的是一個表頭,它有一個按鈕來排序和另一個按鈕來設置一個過濾器。所以我必須知道用戶實際上在單元格內點擊了哪些Widgets。 – mjeffw 2009-07-08 17:36:28

+0

嗯。所以,你需要知道點擊的位置。不知道那裏有 - 可能是。順便說一句 - 你使用的是FixedWidthGrid嗎?它支持排序。 – 2009-07-08 18:14:27

0

如果你知道你的表有多大,將使用網格來代替。所有的小部件都會收到相關事件。我已經完成了這個並創建了我自己的可排序表格。

0

您必須繼承Button google類並添加一個帶有兩個附加參數(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. 
} 

添加按鈕時,調用此構造函數並將行和列索引傳遞給它。

相關問題