0

我在 java 中有一个简单的 MultiSplitPane。它有 1 行(拆分)和 2 个节点(叶子)。如何在现有行下添加另一行。

这是创建 MultiSplitPane 和 2 叶的代码:

List children = 
Arrays.asList(new Leaf("left"),
new Divider(), 
new Leaf("right"));
Split modelRoot = new Split();
modelRoot.setChildren(children);

MultiSplitPane multiSplitPane = new MultiSplitPane();
multiSplitPane.getMultiSplitLayout().setModel(modelRoot);
multiSplitPane.add(new JButton("Left Component"), "left");
multiSplitPane.add(new JButton("Right Component"), "right");

这就是我可以添加另一个叶子的方式,但我需要添加新的拆分(行):

Leaf newLeaf = new Leaf("newLeaf");
    Split newSplit = (Split) multiSplitPane.getMultiSplitLayout().getModel();
    java.util.List newList = new ArrayList();

    newList.add(newLeaf);
    newList.add(new Divider());
    newList.addAll(newSplit.getChildren());

    newSplit.setChildren(newList);

    multiSplitPane.setModel(newSplit);
    multiSplitPane.add(new JButton("new"), "newLeaf");
    revalidate();
4

1 回答 1

1

如果要使用第二个拆分,可以执行以下操作:

  • 创建几个组件以放入第二个拆分中。
  • 制作您将链接上述组件的叶子。
  • 制作一个代表拆分结构的新子列表。
  • 创建拆分并将其子项设置为上述列表。

那是容易的部分。现在,这里是关键:

  • 将您的第二个拆分添加到第一个拆分的子列表中。请注意,您可能必须在第二个拆分之前向第一个拆分的子列表添加一个分隔符!
  • 为您的第一次拆分调用“setChildren”。据我所知,您必须在修改了斯普利特的孩子名单后才这样做。
  • 不要忘记将您的组件实际添加到 MultiSplitPane 并为 MultiSplitPane 调用“重新验证”。

看看这个示例代码。

于 2012-10-14T03:40:50.053 回答