我想计算高度并设置可能包含其他 JSplitPane 和其他组件的 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
的情况下给我我需要的答案。这个问题只是为了在递归和循环上动脑筋。