У меня был довольно простой диалог с парой JPanels примерно равного размера, содержащегося в JSplitPane. Теперь я смотрю на добавление третьего JPanel, и я не уверен, что есть очевидное решение. Есть ли там хорошая стыковка окон? или это ужасно сложная вещь? Если я просто придерживаюсь 3-панельного раскола, мне нужно использовать пару вложенных JSplitPanes или есть альтернатива, которая позволяет использовать трехпозиционное разделение?альтернативы/улучшения JSplitPane
ответ
SwingX библиотека имеет класс JXMultiSplitPane, который позволяет создавать любые макеты изменяемых размеров панелей.
Очень хорошая статья о нем в http://today.java.net/pub/a/today/2006/03/23/multi-split-pane.html
Допустим, у вас есть три группы:
JPanel panel1;
JPanel panel2;
JPanel panel3;
// set up panels
...
// put three panels into a horizontal split pane,
// with 2 resizeable dividers
JSplitPane splitPaneLeft = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
JSplitPane splitPaneRight = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
splitPaneLeft.setLeftComponent(panel1);
splitPaneLeft.setRightComponent(panel2);
splitPaneRight.setLeftComponent(splitPaneLeft);
splitPaneRight.setRightComponent(panel3);
// put splitPaneRight onto a single panel
JPanel panelSplit = new JPanel();
panelSplit.add(splitPaneRight);
Обратите внимание на последнюю строку. Вы добавляете * LAST * splitPane в контейнер, а не первый, как я, а затем задавались вопросом, почему другие не видят. Совершенно неочевидно. – Bradjcox
Вот как я интуитивно сделал свой графический интерфейс с 3 панелями. Однако это вызывает проблемы с изменением размера разделенных панелей: правая панель теперь может быть изменена по левой панели, но не наоборот. Попробуйте переключить главную панель на splitPaneLeft, чтобы увидеть различные функции изменения размера. Выберите стиль, который наилучшим образом соответствует вашему графическому интерфейсу. – Ron
Ooh! хорошо .... спасибо, я посмотрю на это. –