我想重現使用GWT的電子表格單元格的行爲。我能夠製作一個名爲「單元」的複合小部件,它默認爲「標籤」小部件。當用戶點擊這個小部件時,它變成了一個「TextBox」小部件。在模糊事件中,該小部件再次成爲「標籤」小部件。GWT電子表格單元格
我的問題涉及效率和渲染時間。將我的「單元格」設置爲「文本框」可能最簡單,只需通過CSS(根據它們是否輸入數據)將外觀更改爲用戶。不過,我認爲這會影響渲染時間,所以無論何時輸入不需要,我都會恢復到「標籤」小部件。然而,這種方法的問題在於,我基本上每次用戶需要在「單元格」中輸入任何內容時都會創建一個新的TextBox/Label。
這裏是我的僞代碼(因爲我不是圍繞一個IDE)...
public class Cell extends Composite {
private SimplePanel sp;
public Cell() {
Label l = new Label("");
sp.add(l);
}
private void switchMode() {
Widget w = sp.getWidget();
if (w instanceof Label) {
// we have a Label, change it to a TextBox
String text = ((Label) w).getText();
sp.remove(w);
sp.add(new TextBox(text));
// force garbage collection
w = null;
} else {
// we have a TextBox, change it to a Label
String text = ((TextBox) w).getText();
sp.remove(w);
sp.add(new Label(text));
// force garbage collection
w = null;
}
}
...
當有對一個文本框或onBlurEvent當有對標籤的onClick事件,開關模式()方法被調用。批評代碼是受歡迎的。
將一個TextBox和Label包含爲Cell類的私有變量,然後根據需要添加或刪除相應的對象會更聰明嗎?
沒想到的是,卻是的,這可能會更好。我很高興(無論是在我的代碼和頁面渲染),這將是最好的方法嗎? – 2010-01-19 17:36:43
您可以創建2個簡單示例並使用速度跟蹤器來監視它們。 – mrras 2010-01-19 18:18:26