Как использовать MultiSplitLayout в SwingX? - PullRequest
4 голосов
/ 29 декабря 2011

Я пытаюсь использовать MultiSplitPane и MultiSplitLayout из SwingX. Я знаю, как использовать MultiSplitLayout с методом parseModel (см. http://today.java.net/pub/a/today/2006/03/23/multi-split-pane.html). Но я не понимаю механизм без этого метода. Как это воспроизвести?

String layoutDef =
    "(COLUMN (ROW weight=1.0 left (COLUMN middle.top middle middle.bottom) right) bottom)";
MultiSplitLayout.Node modelRoot = MultiSplitLayout.parseModel(layoutDef);

1 Ответ

7 голосов
/ 29 декабря 2011

Хорошо, я наконец нашел ответ сам. Вы должны сначала посмотреть на картинку, чтобы понять код.

Split column1 = new Split();
column1.setRowLayout(false);

Split row = new Split();

Split column2 = new Split();
column2.setRowLayout(false);

column2.setChildren(new Leaf("middle.top"), new Divider(), new Leaf(
    "middle"), new Divider(), new Leaf("middle.bottom"));

row.setChildren(new Leaf("left"), new Divider(), column2,
    new Divider(), new Leaf("right"));

column1.setChildren(row, new Divider(), new Leaf("bottom"));

// Once the layout is done, the code is easy
JXMultiSplitPane msp = new JXMultiSplitPane();
MultiSplitLayout layout = new MultiSplitLayout(column1);
msp.setLayout(layout);
msp.add(new JButton("bottom"), "bottom");
msp.add(new JButton("left"), "left");
msp.add(new JButton("right"), "right");
msp.add(new JButton("middle.bottom"), "middle.bottom");
msp.add(new JButton("middle"), "middle");
msp.add(new JButton("middle.top"), "middle.top");

Изображение, чтобы понять логику кода. модель или макет http://today.java.net/images/2006/03/example3-diagram.gif

...