0

私は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 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

2 つ目の Split を使用する場合は、次の手順を実行できます。

  • 2 番目の Split 内に配置するコンポーネントをいくつか作成します。
  • 上記のコンポーネントをリンクするリーフを作成します。
  • Split の構造を表す新しい子リストを作成します。
  • Split を作成し、その子を上記のリストに設定します。

それは簡単な部分です。さて、ここに鍵があります:

  • 2 番目の Split を最初の Split の子リストに追加します。2 番目の分割の前に、最初の分割の子リストに仕切りを追加する必要がある場合があることに注意してください。
  • 最初の Split に対して「setChildren」を呼び出します。私が知る限り、Split の子リストを修正した後にこれを行う必要があります。
  • 実際にコンポーネントを MultiSplitPane に追加し、MultiSplitPane の「revalidate」を呼び出すことを忘れないでください。

このサンプルコードを見てください。

于 2012-10-14T03:40:50.053 に答える