2011-06-23 44 views
1

我寫一個測試,看看事件處理程序應該如何工作,但似乎我在這裏做得不對,因爲我看不到的小部件添加到flextable :(GWT - FlexTable - 無法看到添加的行

這裏我的代碼片段

複合材料A:

B b=new B(); 
Button addItemButton = new Button("+"); 
     addItemButton.addClickHandler(new ClickHandler() { 
      public void onClick(ClickEvent event) { 
       Window.alert("Hello world!"); 
       b.addItem(itemTable); 
      } 

     }); 

複合B:

public void addItem(FlexTable itemTable) 
    { 



     itemTable.add(new C()); 
    } 

複合C:

... 

Button removeRow=new Button(); 
removeButton.addClickHandler(new ClickHandler() { 
       public void onClick(ClickEvent event) { 

        itemTable.removeRow(?); 
       } 

      }); 

我的意思是什麼增加了itemTable,當我在我的默認Internet瀏覽器中運行它作爲GWT應用程序。如何刷新ItemTable或其他東西以查看其添加或刪除的行?

任何有用的意見讚賞

回答

1

您需要在GWT例如股票更密切地關注。這是代碼段,實際上增加了該行:

// Add the stock to the table. 
    int row = stocksFlexTable.getRowCount(); 
    stocks.add(symbol); 
    stocksFlexTable.setText(row, 0, symbol); 

stocksFlexTable.setText()的調用是什麼在表中創建行和設置文本。所以,你的BC代碼應該看起來更像是這樣的:

//In Composite B 
public void addItem(FlexTable itemTable) { 
    int row = itemTable.getRowCount(); 
    itemTable.setText(row, 0, symbol); 
    itemTable.add(new C(row)); 
} 

//In Composite C, the constructor saves the int argument as the field 'row' 
Button removeRow=new Button(); 
removeButton.addClickHandler(new ClickHandler() { 
    public void onClick(ClickEvent event) { 
    itemTable.removeRow(C.this.row); 
    } 
}); 

如果你只是想堆了一堆小部件的相互(所以如果你沒有在表中創建多個列的頂部),你應該只使用VerticalPanel。這是add()方法將做你所期待的。

0

嘗試使用setWidget方法。

public void addItem(FlexTable itemTable) 
{ 
     itemTable.setWidget(0,0,new Label("Hello world")); 
} 

setWidgets請求參數(row,col,Widget)。

+0

但我想添加無限行數的項目...只需添加方法爲谷歌教程顯示。我怎樣才能做到這一點? – user592704

+0

關於使用VerticalPanel或FlowPanel的Haw? – fdaines

+0

嗯...我想有能力添加和刪除行動態,但我沒有機會預測有多少行預計將被添加,所以我選擇了FlexTable,因爲這谷歌tut說http://code.google。 com/webtoolkit/doc/latest/tutorial/codeclient.html – user592704

1

您需要獲取並使用當前的行數在運行時

itemTable.setWidget(itemTable.getRowCount(),0,new Label("Hello world")); 
+0

Emm ...謝謝。但是我怎樣才能刪除一行呢?我希望每一行都包含一個包含它的「刪除行」按鈕的小部件應該刪除其中的行。大部分類似於谷歌示例顯示http://code.google.com/web toolkit/doc/latest/tutorial/images/CodeClientAddStock.png – user592704

+0

但問題是一個複合包含它的「行刪除按鈕」。所以我只是想知道......是否有可能從另一個組合中刪除表格行。更多指令... FlexTable在Composite A中,並且「刪除行」按鈕位於Composite C中 – user592704