我在DisclosurePanel中使用ResizeLayoutPanel时遇到问题。
我在DisclosurePanel中有一个Datagrid到ResizeLayoutPanel和ResizeLayaoutPanel。问题是加载数据时,如果DisclosurePanel关闭,当用户打开disclosurePanel时,它会发现表空。如果用户在DisclosurePanel打开时执行此操作,则工作正常。
知道如何解决这个问题?
这是代码:
ResizeLayoutPanel resizeLayoutPanel = new ResizeLayoutPanel();
resizeLayoutPanel.setWidth("100%");
resizeLayoutPanel.setStyleName("gwt-resizeLayoutPanel-Example");
/****CREATE COLUMNS [BEGIN] ***************************************************************************/
// Create column.
TextColumn<Object> column = new TextColumn<Object>() {
@Override
public String getValue(Object object) {
return "Test";
}
};
/******CREATE COLUMNS [END] ***************************************************************************/
cellTable = new DataGrid<Object>();
cellTable.addColumn(column, "Example");
cellTable.setKeyboardSelectionPolicy(HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.BOUND_TO_SELECTION);
cellTable.setWidth("100%");
cellTable.setEmptyTableWidget(new Label("Example table"));
resizeLayoutPanel.add(cellTable);
//Link dataProvider with CellTable
dataProvider.addDataDisplay(cellTable);
this.container = ModuleContainer.getAdvancedDisclosurePanel("Samples");
this.container.setWidth("100%");
this.container.setContent(resizeLayoutPanel);
return this.container;
答案 0 :(得分:0)
ResizeLayoutPanel提供resize(实现ProvideResize),但不需要调整大小(不实现RequiresResize)。
由于处于普通状态的ResizeLayoutPanel不会侦听调整大小,因此您必须有意调整大小,或编写代码来调整大小。也许,将宽度和高度设置为100%。
然后,为什么要将表放在ResizeLayoutPanel中?
ResizeLayoutPanel为RequiresResize的小部件提供调整大小。您需要扩展celltable以实现RequiresResize,以便ResizeLayoutPanel能够调整它的大小。
编程GWT时,任何人都需要学习的第一个概念是理解为什么/如何从根调整大小面板创建一个不间断的RequiresResize-RequiresResize的链/树。如果你的调整大小链/树的根不是RootLayoutPanel,那么你必须故意调整该根的大小。
在这种情况下,您已使ResizeLayoutPanel成为调整大小不存在的调整大小链的根。使用其他面板,其中包含需要优先级,以便父级可以调整其大小 - 以及确保父级可由用户或其他可调整大小的父级手动调整大小。
我可以请你自问一下,使用ResizeLayoutPanel而不提供调整大小的方法的原因是什么,也没有将它用作调整大小链的根目录?