【发布时间】:2016-07-13 10:47:15
【问题描述】:
我在自己的类 FileUploaderResultsTable.java 中创建了一个表,如下所示:
public class FileUploaderResultsTable extends Table
{
public FileUploaderResultsTable()
{
Table resultTable = new Table("Rendering table");
resultTable.addStyleName("testTable2");
resultTable.addContainerProperty("Name", String.class, null);
resultTable.addContainerProperty("Mag", Float.class, null);
resultTable.addItem(new Object[]{"Canopus", -0.72f}, 2);
resultTable.addItem(new Object[]{"Arcturus", -0.04f}, 3);
resultTable.addItem(new Object[]{"Alpha Centauri", -0.01f}, 4);
resultTable.setPageLength(resultTable.size());
System.out.println("table created");
}
我有另一个类 FileUploaderComponent.java,其中包括添加到 Window 对象的垂直布局。我正在尝试显示上表,因此在 FileUploaderComponent.java 中我创建了一个 FileUploaderResultsTable 对象,如下所示:
public class FileUploaderComponent extends AbstractJavaScriptComponent
{
...
private VerticalLayout myLayout = new VerticalLayout();
private FileUploaderResultsTable resultsTable = new FileUploaderResultsTable();
...
public void addTable(){
myLayout.addComponent(resultsTable);
}
}
myLayout 然后被添加到另一个函数中的新窗口对象。该机制有效,因为我正在添加其他元素,如文本字段等,但由于某些原因,该表没有正确添加。
在 DOM 中,我可以看到有一个表,但它是空的,并且没有指定类名。
老实说,通常如果我想将另一个类中的组件添加到布局中,我通常会将组件称为resultsTable.resultTable,因此 object.component 语法而不仅仅是resultsTable,但编译器不喜欢那。那么,是否有另一种方法可以将表格作为组件添加到布局中,还是我只是在做一些愚蠢的事情?
【问题讨论】:
-
我看到你在
FileUploaderResultsTable中扩展Table,然后在其中创建Table的新副本。为什么 ?随着您的表格扩展Table,它已经具备所有功能。可能是当容器调用返回数据等的函数时,父Table正在重新调整空白数据。似乎没有任何被覆盖的方法可以从您的内部副本中获取数据。换句话说,您可以删除班级中对resultTable的所有引用。 -
我正在扩展 Table 因为我将不得不延迟加载一些行(这只是一个虚拟表,真正的表可能有数千行长)。所以,你是说如果我扩展表,我可以直接向它添加行而不创建表,因为扩展类 Table 已经创建了一个?
-
阅读一些教程如何在 java 中使用扩展类。