如何在Java中向MultiSplitPane添加新的Split(行)?

时间:2012-09-06 16:40:37

标签: java jxmultisplitpane multisplitpane

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

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

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的方法,但我需要添加新的Split(行):

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();

1 个答案:

答案 0 :(得分:1)

如果您想使用第二个分割,可以执行以下操作:

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

这很容易。现在,关键是:

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

查看this sample code.