gwtflextable的问题
我最近使用GWT 2.4创建了一个flextable,使用以下代码:gwtflextable的问题,gwt,flextable,Gwt,Flextable,我最近使用GWT 2.4创建了一个flextable,使用以下代码: @uiBinder Flextable flextable; 在构造函数中,我调用setupFlexTable()之后 initWidget(uiBinder.createAndBindUi(this)) 然后,flexTable被实例化。我错过了那部分。使用setText()有效 setWidget没有显示,但我使用的是: int numRows = flexTable.getRowCount(); fle
@uiBinder Flextable flextable;
在构造函数中,我调用setupFlexTable()之后
initWidget(uiBinder.createAndBindUi(this))代码>
然后,flexTable被实例化。我错过了那部分。使用setText()有效
setWidget没有显示,但我使用的是:
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()一起使用:
另外,当我使用flexTable.setText(“标签一”);等它会显示,但当我使用setWidget()时,它不会显示吗
另一个问题是我需要使这个表与上面的文件列表保持同步,但是使用Firebug我发现如果我动态地向表中添加两行,它会显示行数为4?当我试图删除一行并且它到达其中一个空行时,这会抛出一个索引越界错误
作为一个工作,我使用这个代码查找需要删除的行,避免出现空白行的问题(显然有两个并且只有两个空白行插入表中)。
int rows=flexTable.getRowCount();
对于(int i=0;i
那么,有人能解释一下为什么setWidget()不显示任何内容,以及为什么我添加的每一行都会有一个额外的空行吗 您不应该在代码中实例化FlexTable—GWT会为您这样做。一旦你创建了一个新的FlexTable
,你就在处理一个新对象,而不是小部件中包含的对象。在您发布的代码中,有一个变量名为flextable
,另一个变量名为flextable
——很容易想象会发生一些混淆
我认为,一旦您正确设置了此选项,您的其他问题可能会变得更加清楚。我第一次将行、列和小部件设置错误。愚蠢的语法问题。这是第一个问题的正确代码
flexTable.setWidget(0, 0, new Label("Label One"));
下面是第二个问题的答案
这是一行令人不快的代码:
flexTable.getFlexCellFormatter().setRowSpan(rowCount, 0, 2);
它应该是row、column、rowspan,我把它搞混了,所以它添加了空行。目前,FlexTable使用元素td的过时元素属性align width height等。
自HTML5以来,这些不再受支持。GWT应该更改FlexTable和其他覆盖HTMLTable的类,以使用CSS而不是这些非常旧的元素属性 看起来您的代码段缺少上下文-是否正在生成一个隐藏成员变量的局部变量?你的意思是你的代码中的@UiField
?我把它清理了一下,看看为什么我会得到一个空的flexTable,duh!这仍然不能解释空行或setWidget()没有显示任何内容的原因。请说明如何调用setWidget
?您是对的,一旦我通过uiBinder设置,语法问题就不言而喻了。谢谢
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;
}
}
flexTable.setWidget(0, 0, new Label("Label One"));
flexTable.getFlexCellFormatter().setRowSpan(rowCount, 0, 2);