0

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

4

1 回答 1

1

你可以用堆栈模拟递归:如何用堆栈模拟递归?

我曾经尝试过模拟一个简单的类似斐波那契的递归:

f(n) = f(n-1) + f(n-2) + array[n]

结果放在 GitHub 上,并根据链接答案中的说明编写。我应该承认这是一项比我最初想象的更复杂的任务。

于 2013-11-11T17:56:30.383 回答