首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GWT电子表格单元格

GWT电子表格单元格
EN

Stack Overflow用户
提问于 2010-01-19 23:14:53
回答 2查看 3.4K关注 0票数 3

我正在尝试使用GWT重现电子表格单元格的行为。我可以创建一个名为"Cell“的复合小部件,默认情况下它是一个"Label”小部件。当用户单击此小部件时,它将变成一个"TextBox“小部件。在模糊事件中,小部件再次变成“标签”小部件。

我的问题涉及到效率和渲染时间。最简单的方法可能就是将我的"Cell“设为"TextBox”,然后通过CSS改变用户的外观(根据用户是否正在输入数据)。但是,我认为这会影响渲染时间,所以每当不需要输入时,我都会恢复使用"Label“小部件。然而,这种方法的问题是,每次用户需要在"Cell“中输入任何内容时,我基本上都会创建一个新的文本框/标签。

下面是我的伪代码(因为我没有使用IDE)……

代码语言:javascript
运行
复制
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;
    }
}

...

当TextBox上有onBlurEvent或Label上有onClick事件时,将调用switchMode()方法。欢迎对代码进行评论。

相反,包含一个TextBox并将其标记为Cell类的私有变量,然后根据需要添加或删除相应的对象是不是更聪明?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-20 18:43:47

我们遇到了类似的问题:类似excel的表格的高效显示(许多行和列,每个单元格都是可就地编辑的)。

最终的解决方案是:将表格呈现为字符串:每个单元格都呈现为文本,所有内容都通过innerHTML进行呈现。当用户使用鼠标或键盘选择一个单元格时,选定的单元格(具有相同大小)上会出现特殊的隐藏TextArea,并且焦点将提供给TextArea。OnBlur -输入的文本返回到单元格,并且TextArea再次隐藏。

我们不对单元格使用小部件。对于整个表,TextArea只有一个。

另请参阅“有效的GWT:使用Google Web Toolkit开发复杂、高性能的应用程序”http://code.google.com/events/io/2009/sessions/EffectiveGwt.html

票数 4
EN

Stack Overflow用户

发布于 2010-01-20 01:28:06

一种更简单的方法是将它们都添加到您的面板中(虽然不是simplePanel ),并使用setVisable方法来改变可视性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2094469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档