2015-06-25 101 views
0

我有2個smartGWT buttonLayouts包含保存和取消按鈕。一個位於UI的頂部,另一個位於底部以方便使用,因此用戶無需一直向上/向下滾動以保存/取消表單。smartGWT複製按鈕

當用戶在任何地方選擇保存/取消時,應該禁用所有按鈕,直到後臺操作完成。

處理這個問題的最佳方法是什麼?

如果我這樣做:

private Layout buildTopButtonBar() { 
    saveButton = new Button("Save"); 
    saveButton.addClickHandler(...); 
    buttonLayout.addMember(saveButton); 
} 

private Layout buildBottomButtonBar() { 
    saveButton = new Button("Save"); 
    saveButton.addClickHandler(...); 
    buttonLayout.addMember(saveButton); 
} 

saveButton動作(當用戶選擇保存時,saveButton應禁用)在我的clickHandler事件只在底欄的按鈕來進行,但在其他所有後臺操作工作。

如果我這樣做:顯示

saveButton = new Button("Save"); 
saveButton.addClickHandler(...); 
buildTopButtonBar(); // adds saveButton to top bar 
buildBottomButtonBar(); // adds saveButton to bottom bar 

只有底部欄。

我可以創建4個單獨的按鈕:

topSaveButton = new Button("Save"); 
bottomSaveButton = new Button("Save"); 
... // add all required functionality and clickHandlers 

但這只是感覺罪惡。 我有其他選擇嗎? 這是smartGWT 4.

回答

1

您不能重用小部件的實例。

Button saveButton = new Button("Save"); // some more code saveButton.addClickHandler(...); buildTopButtonBar(); // adds saveButton to top bar buildBottomButtonBar(); // adds saveButton to bottom bar ;

將不起作用。

Button topSaveButton = new Button("Save"); 
Button bottomSaveButton = new Button("Save"); 
... // add all required functionality and clickHandlers 

將工作。

每個小部件都代表DOM樹中的一個節點。您可以通過調用getElement()來訪問該節點。再次添加按鈕將刪除頂部的按鈕並將其添加到底部。

如果頂部和底部有保存按鈕,則需要兩個實例。