Java GWT电子表格单元
我试图使用GWT重现电子表格单元格的行为。我能够制作一个名为“Cell”的复合小部件,默认情况下它是一个“Label”小部件。当用户单击此小部件时,它将成为“文本框”小部件。在模糊事件中,小部件再次成为“标签”小部件 我的问题涉及效率和渲染时间。可能最简单的方法是将我的“单元格”变成“文本框”,并通过CSS(根据用户是否输入数据)更改用户的外观。然而,我认为这会影响渲染时间,所以每当不需要输入时,我都会返回到“标签”小部件。然而,这种方法的问题在于,每次用户需要在“单元格”中输入任何内容时,我基本上都会创建一个新的文本框/标签 这是我的伪代码(因为我不熟悉IDE) 当文本框上有onBlurEvent或标签上有onClick事件时,将调用switchMode()方法。欢迎批评代码Java GWT电子表格单元,java,gwt,cell,composite,Java,Gwt,Cell,Composite,我试图使用GWT重现电子表格单元格的行为。我能够制作一个名为“Cell”的复合小部件,默认情况下它是一个“Label”小部件。当用户单击此小部件时,它将成为“文本框”小部件。在模糊事件中,小部件再次成为“标签”小部件 我的问题涉及效率和渲染时间。可能最简单的方法是将我的“单元格”变成“文本框”,并通过CSS(根据用户是否输入数据)更改用户的外观。然而,我认为这会影响渲染时间,所以每当不需要输入时,我都会返回到“标签”小部件。然而,这种方法的问题在于,每次用户需要在“单元格”中输入任何内容时,我基
将文本框和标签作为Cell类的私有变量,然后根据需要添加或删除相应的对象,这会更明智吗?更简单的方法是将它们都添加到面板中(而不是
simplePanel
),并使用setVisable
方法更改可视性。我们遇到了类似的问题:高效地显示类似excel的表格(许多行和列,每个单元格都在适当位置可编辑)
最终的解决方案是:将表呈现为字符串:每个单元格都呈现为文本,全部通过innerHTML放置。
当用户用鼠标或键盘选择一个单元格时,所选单元格上会出现特殊的隐藏文本区域(大小相同),焦点会指向文本区域。OnBlur-输入的文本返回单元格,文本区域再次隐藏
我们对单元格不使用小部件。TextArea是整个表中唯一的一个
另见
“高效GWT:使用Google Web Toolkit开发复杂、高性能的应用程序”
我没有想到这一点,但是的,那可能会更好。我对高效(无论是在我的代码中还是在页面呈现中)感到好奇,哪种方法是最好的?您可以创建两个简单的示例,并使用speed Tracer来监视它们。
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;
}
}
...