Layout Panel (DockLayoutPanel) 内で CaptionPanel を使用したい。
問題は、CaptionLayoutPanel(SimpleLayoutPanel など) の実装がないため、レイアウト パネル内でこのパネルを使用する場合、「サイズ変更チェーン」が CaptionPanel を介して壊れているため、すべての子がサイズ変更イベントを失うことです。
回避策はありますか?
Layout Panel (DockLayoutPanel) 内で CaptionPanel を使用したい。
問題は、CaptionLayoutPanel(SimpleLayoutPanel など) の実装がないため、レイアウト パネル内でこのパネルを使用する場合、「サイズ変更チェーン」が CaptionPanel を介して壊れているため、すべての子がサイズ変更イベントを失うことです。
回避策はありますか?
およびインターフェイスの拡張CaptionPanelと実装ProvidesResizeRequiresResize
CustomCaptionPanel extends CaptionPanel implements RequiresResize,ProvidesResize {
public void onResize() {
if (getContentWidget() instanceof RequiresResize) {
((RequiresResize) getContentWidget()).onResize();
}
}
最も簡単な解決策は、CaptionPanel を使用しないことです。
子がサイズ変更イベントに応答するようにする場合は、キャプション (ラベル) を保持するレイヤーを LayoutPanel に追加し、サイズ変更に応答する子ウィジェットを含む別のレイヤーを追加します。これらのウィジェットは好きなようにスタイル設定できます (たとえば、Label はタブやパネルのように見え、背景と角が丸くなっているなど)。
別の解決策は、Roddy of the Frozen Peas が提案したように CaptionPanel のスタイルを設定し、ウィンドウに ResizeHandler を追加することです。トリガーされると、子ウィジェットのサイズを次のように設定できます。
myChildWidget.setSize(myCaptionPanel.getOffsetWidth() + "px", myCaptionPanel.getOffsetHeight() + "px");