Layout Panel (DockLayoutPanel) 内で CaptionPanel を使用したい。
問題は、CaptionLayoutPanel(SimpleLayoutPanel など) の実装がないため、レイアウト パネル内でこのパネルを使用する場合、「サイズ変更チェーン」が CaptionPanel を介して壊れているため、すべての子がサイズ変更イベントを失うことです。
回避策はありますか?
Layout Panel (DockLayoutPanel) 内で CaptionPanel を使用したい。
問題は、CaptionLayoutPanel(SimpleLayoutPanel など) の実装がないため、レイアウト パネル内でこのパネルを使用する場合、「サイズ変更チェーン」が CaptionPanel を介して壊れているため、すべての子がサイズ変更イベントを失うことです。
回避策はありますか?
およびインターフェイスの拡張CaptionPanel
と実装ProvidesResize
RequiresResize
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");