Gwt 标题面板->;标题布局面板

Gwt 标题面板->;标题布局面板,gwt,Gwt,我想在布局面板(DockLayoutPanel)中使用CaptionPanel 问题是没有CaptionLayoutPanel(像SimpleLayoutPanel)实现,因此如果我想使用 此面板在布局面板中,由于“调整大小链”被CaptionPanel打断,因此所有孩子都将丢失调整大小事件 有什么解决办法吗?最简单的解决办法是不使用CaptionPanel 如果希望子部件响应调整大小事件,请在布局面板中添加一个包含标题(标签)的层,以及另一个包含要响应调整大小的子部件的层。您可以按照自己喜欢的

我想在布局面板(DockLayoutPanel)中使用CaptionPanel

问题是没有CaptionLayoutPanel(像SimpleLayoutPanel)实现,因此如果我想使用 此面板在布局面板中,由于“调整大小链”被CaptionPanel打断,因此所有孩子都将丢失调整大小事件


有什么解决办法吗?

最简单的解决办法是不使用CaptionPanel

如果希望子部件响应调整大小事件,请在布局面板中添加一个包含标题(标签)的层,以及另一个包含要响应调整大小的子部件的层。您可以按照自己喜欢的方式设置这些小部件的样式(例如,标签可以看起来像带有一些背景和圆角的选项卡或面板等)

另一种解决方案是按照Roddy of the Friented Peas的建议设计CaptionPanel的样式,然后在窗口中添加ResizeHandler。触发时,您可以将子小部件的大小设置为

myChildWidget.setSize(myCaptionPanel.getOffsetWidth() + "px", myCaptionPanel.getOffsetHeight() + "px");

最简单的解决方案是不使用CaptionPanel

如果希望子部件响应调整大小事件,请在布局面板中添加一个包含标题(标签)的层,以及另一个包含要响应调整大小的子部件的层。您可以按照自己喜欢的方式设置这些小部件的样式(例如,标签可以看起来像带有一些背景和圆角的选项卡或面板等)

另一种解决方案是按照Roddy of the Friented Peas的建议设计CaptionPanel的样式,然后在窗口中添加ResizeHandler。触发时,您可以将子小部件的大小设置为

myChildWidget.setSize(myCaptionPanel.getOffsetWidth() + "px", myCaptionPanel.getOffsetHeight() + "px");

扩展
CaptionPanel
并实现
providesize
requireresize
接口

CustomCaptionPanel extends CaptionPanel implements RequiresResize,ProvidesResize {

    public void onResize() {
        if (getContentWidget() instanceof RequiresResize) { 
            ((RequiresResize) getContentWidget()).onResize(); 
    }
}

扩展
CaptionPanel
并实现
providesize
requireresize
接口

CustomCaptionPanel extends CaptionPanel implements RequiresResize,ProvidesResize {

    public void onResize() {
        if (getContentWidget() instanceof RequiresResize) { 
            ((RequiresResize) getContentWidget()).onResize(); 
    }
}

CaptionPanel
编译为HTML
。只需将
CaptionPanel
粘贴为
SimplePanel
的小部件,将
SimplePanel
添加到您的
DockLayoutPanel
,并使用CSS为
CaptionPanel
提供100%的宽度和100%的高度,以便将其大小调整为
SimplePanel
父级。@Roddy of the freezed Peas这不会解决问题。他担心CaptionPanel的子级将无法调整大小,因为CaptionPanel没有为其子级提供大小。问题是CaptionPanel的宽度和高度不能达到100%。如果在您的示例中将CaptionPanel添加到SimpleLayoutPanel,则CaptionPanel将自动具有100%宽度和100%高度。问题是CaptionPanel的孩子们。如果我将Datagrid添加到CaptionPanel,它将不会自动获得所有可用空间,因为CaptionPanel已断开调整大小链(未实现界面Requiresize&ProvidesResize)。
CaptionPanel
编译为HTML
。只需将
CaptionPanel
粘贴为
SimplePanel
的小部件,将
SimplePanel
添加到您的
DockLayoutPanel
,并使用CSS为
CaptionPanel
提供100%的宽度和100%的高度,以便将其大小调整为
SimplePanel
父级。@Roddy of the freezed Peas这不会解决问题。他担心CaptionPanel的子级将无法调整大小,因为CaptionPanel没有为其子级提供大小。问题是CaptionPanel的宽度和高度不能达到100%。如果在您的示例中将CaptionPanel添加到SimpleLayoutPanel,则CaptionPanel将自动具有100%宽度和100%高度。问题是CaptionPanel的孩子们。如果我将Datagrid添加到CaptionPanel,它将不会自动获得所有可用空间,因为CaptionPanel已断开调整大小链(未实现界面Requiresize&ProvidesResize)。感谢您的提示,andrei。你能给我一个第一个答案的例子吗。如何设置布局面板的样式以使其具有captionpanel效果?我能够用您的第一个建议成功地实现一个示例。太多了!谢谢你的提示,安德烈。你能给我一个第一个答案的例子吗。如何设置布局面板的样式以使其具有captionpanel效果?我能够用您的第一个建议成功地实现一个示例。太多了!谢谢你的例子。两个问题:*getChildren()不存在*我将您的onResize方法更改为以下内容:public void onResize(){if(getWidget()instanceof Requiresize){((Requiresize)getWidget())。onResize();}}}但问题是,此示例不起作用。没有getChildren()用于标题面板。我用getContentWidget()编辑了答案。当我的编辑被批准时,它应该会显示出来。@AndreiVolgin:谢谢你的编辑。它显然被拒绝了。我手工编辑了我的帖子太棒了!这几乎是完美的。我只需要手动将孩子的身高设置为98%(通常布局面板不需要),以适应标题面板。谢谢你的示例。两个问题:*getChildren()不存在*我将您的onResize方法更改为以下内容:public void onResize(){if(getWidget()instanceof Requiresize){((Requiresize)getWidget())。onResize();}}}但问题是,此示例不起作用。没有getChildren()用于标题面板。我用getContentWidget()编辑了答案。当我的编辑被批准时,它应该会显示出来。@AndreiVolgin:谢谢你的编辑。它显然被拒绝了。我手工编辑了我的帖子太棒了!这几乎是完美的。我只需要手动将孩子的身高设置为98%(通常布局面板不需要),以适应标题面板。