首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT Flextable的问题

GWT Flextable的问题
EN

Stack Overflow用户
提问于 2012-01-05 02:14:23
回答 3查看 3.2K关注 0票数 0

我最近使用GWT2.4创建了一个flextable,代码如下:

代码语言:javascript
复制
@uiBinder Flextable flextable;

之后,我在构造函数中调用setupFlexTable()

initWidget(uiBinder.createAndBindUi(this));

然后实例化flexTable。我错过了这一部分。使用setText()是可行的。

代码语言:javascript
复制
 //Header row
    private void setupFlexTable() {
            flexTable.setText(0, 0, "Label One");
            flexTable.setText(0, 1, "Label Two");
    }

setWidget没有显示,但我使用的是:

代码语言:javascript
复制
int numRows = flexTable.getRowCount();
        flexTable.setWidget(numRows, 0, new Label("Label One"));
        flexTable.setWidget(numRows, 1, new Label("Label Two"));
        flexTable.getFlexCellFormatter().setRowSpan(0, 1, numRows + 1);

下面是我在其中添加行的地方,此代码适用于setWidget():

代码语言:javascript
复制
@Override
    public void setRowData(Data data) {
        int rowCount = flexTable.getRowCount() + 1;
        flexTable.setWidget((rowCount), 0, new Label(data.getDataName()));
        flexTable.getFlexCellFormatter().setRowSpan(rowCount, 0, 2);
        flexTable.setWidget((rowCount), 1, new Label(data.getData()));
        flexTable.getFlexCellFormatter().setRowSpan(rowCount, 1, 2);
    }

另外,当我使用flexTable.setText("Label One“)时;等等...它显示了,但是当我使用setWidget()时,它不显示吗?

另一个问题是,我需要使这个表与它上面的文件列表保持同步,但是使用Firebug时,我发现如果我向表中动态添加两行,它会显示rowCount为4?当我尝试删除一行时,这会抛出一个索引越界错误,它会到达这些空行中的一个。

作为一种变通方法,我使用此代码查找需要删除的行,并避免空行的问题(显然,表中插入了两个且只有两个空行)。

代码语言:javascript
复制
int rows = flexTable.getRowCount(); 

        for(int i=0; i < rows; i++){
//Match the text in the first field in order to know the proper row to delete.
            if(flexTable.isCellPresent(i,0) && flexTable.getText(i, 0).equalsIgnoreCase(fileName)){
                flexTable.removeRow(i);
                break;
            }
        }

那么,谁能解释一下为什么setWidget()没有显示任何内容,为什么我每添加一个内容就会得到一个额外的空行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-05 02:28:58

您不应该在代码中实例化FlexTable - GWT会为您做这件事。一旦创建了new FlexTable,您就是在处理一个新对象,而不是小部件中包含的对象。在您发布的代码中,您有一个名为flextable的变量和另一个名为flexTable的变量-很容易想象会发生一些混淆。

我认为,一旦你正确地设置了这个,你的其他问题可能会变得更加清晰。

票数 2
EN

Stack Overflow用户

发布于 2012-01-06 01:00:48

我第一次把行、列、小部件的设置弄错了。愚蠢的语法问题。这是第一个问题的正确代码。

代码语言:javascript
复制
flexTable.setWidget(0, 0, new Label("Label One"));

这是第二个问题的答案。

这是令人不快的代码行:

代码语言:javascript
复制
flexTable.getFlexCellFormatter().setRowSpan(rowCount, 0, 2);

它应该是行,列,行跨度,我把它弄混了,所以它添加了空行。

票数 0
EN

Stack Overflow用户

发布于 2014-04-06 17:10:01

目前,FlexTable使用元素td的过时元素属性对齐宽度高度等。从HTML5开始,这些不再受支持。GWT应该更改覆盖HTMLTable的FlexTable和其他类,以使用CSS而不是这些非常旧的元素属性!

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

https://stackoverflow.com/questions/8731800

复制
相关文章

相似问题

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