我想在布局面板 (DockLayoutPanel) 中使用 CaptionPanel。
问题是没有 CaptionLayoutPanel(如 SimpleLayoutPanel)实现,因此如果我想在布局面板中使用此面板,所有子项都会丢失调整大小事件,因为“调整大小链”已通过 CaptionPanel 中断。
有什么解决方法吗?
我想在布局面板 (DockLayoutPanel) 中使用 CaptionPanel。
问题是没有 CaptionLayoutPanel(如 SimpleLayoutPanel)实现,因此如果我想在布局面板中使用此面板,所有子项都会丢失调整大小事件,因为“调整大小链”已通过 CaptionPanel 中断。
有什么解决方法吗?
最简单的解决方案是不使用 CaptionPanel。
如果您希望孩子响应调整大小事件,请在 LayoutPanel 中添加一个包含标题(标签)的层,以及另一个包含您想要响应调整大小的子小部件的层。您可以以任何您喜欢的方式设置这些小部件的样式(例如,标签可以看起来像带有一些背景和圆角的选项卡或面板等)
另一种解决方案是将您的 CaptionPanel 设置为 Roddy of the Frozen Peas 建议的样式,然后将 ResizeHandler 添加到您的窗口。触发时,您可以将子小部件的大小设置为
myChildWidget.setSize(myCaptionPanel.getOffsetWidth() + "px", myCaptionPanel.getOffsetHeight() + "px");
扩展CaptionPanel
和实现ProvidesResize
和RequiresResize
接口
CustomCaptionPanel extends CaptionPanel implements RequiresResize,ProvidesResize {
public void onResize() {
if (getContentWidget() instanceof RequiresResize) {
((RequiresResize) getContentWidget()).onResize();
}
}