高さを計算し、他の JSplitPanes や他のコンポーネントも含む可能性がある JSplitPane の resizeWeight を設定したいと思います。現在の概念は次のようになります (警告: スニペット、完全に機能するコード フラグメントではありません。完全に機能するソリューション コードではなく、アキュムレータを使用して while ループを使用して再帰呼び出しを書き直すためのガイドラインのみが必要です)。
splitPane.setResizeWeight(calculateComponentHeight(splitPane.getTopComponent()) / calculateNewSplitPaneHeight(splitPane));
...
private double calculateNewSplitPaneHeight(JSplitPane sp) {
return calculateComponentHeight(sp.getTopComponent()) + calculateComponentHeight(sp.getBottomComponent());
}
private double calculateComponentHeight(Component c) {
if (c instanceof JSplitPane) {
return calculateNewSplitPaneHeight((JSplitPane) c);
}
return (double) c.getHeight();
}
分割されたペインの埋め込みのレベルがわからないかもしれないので、そのような再帰を解決するための実用的なアプローチは何ですか?
はい、わかっsplitPane.getPreferredSize().height
ています。再帰的な呼び出しを行わなくても、splitPane.getTopComponent().getPreferredSize().height
必要な答えが得られます。これは、再帰とループについて脳を働かせるためにここにある質問です。