使用GWT在DisclosurePanel内调整ResizeLayoutPanel

时间:2012-09-05 14:49:04

标签: java gwt

我在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;

1 个答案:

答案 0 :(得分:0)

ResizeLayoutPanel提供resize(实现ProvideResize),但不需要调整大小(不实现RequiresResize)。

由于处于普通状态的ResizeLayoutPanel不会侦听调整大小,因此您必须有意调整大小,或编写代码来调整大小。也许,将宽度和高度设置为100%。

然后,为什么要将表放在ResizeLayoutPanel中?

ResizeLayoutPanel为RequiresResize的小部件提供调整大小。您需要扩展celltable以实现RequiresResize,以便ResizeLayoutPanel能够调整它的大小。

编程GWT时,任何人都需要学习的第一个概念是理解为什么/如何从根调整大小面板创建一个不间断的RequiresResize-RequiresResize的链/树。如果你的调整大小链/树的根不是RootLayoutPanel,那么你必须故意调整该根的大小。

在这种情况下,您已使ResizeLayoutPanel成为调整大小不存在的调整大小链的根。使用其他面板,其中包含需要优先级,以便父级可以调整其大小 - 以及确保父级可由用户或其他可调整大小的父级手动调整大小。

我可以请你自问一下,使用ResizeLayoutPanel而不提供调整大小的方法的原因是什么,也没有将它用作调整大小链的根目录?