Я проектирую действительно простой графический интерфейс, но без везения. По сути, внешний макет имеет две колонки, которые являются панелью сплиттера (это для IRC-клиента, которого я пишу). С левой стороны находится дерево сервера / канала / пользователя, а справа - панель чата. Теперь я разобью это так, что с правой стороны есть панель вывода вверху и поле ввода с одной линией внизу.
Это код для создания GUI в целом (это всего лишь фрагмент)
ChatModel cm = new ChatModel();
ChatView cv = new ChatView(cm);
treeViewChatSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, serverTreeView, cv);
treeViewChatSplitPane.setSize(500, 500);
treeViewChatSplitPane.setBorder(null);
treeViewChatSplitPane.setDividerSize(3);
this.getContentPane().add(treeViewChatSplitPane);
this.setSize(500, 500);
В конструкторе ChatView есть это (он расширяет java.awt.Container)
this.model = model;
this.setLayout(new BorderLayout());
mainTextArea = new JTextArea();
mainTextArea.setLineWrap(true);
mainTextArea.setBackground(new Color(255, 255, 255));
inputField = new JTextField();
this.add(mainTextArea, BorderLayout.CENTER);
this.add(inputField, BorderLayout.PAGE_END);
Теперь все выглядит нормально, но проблема в том, что вы можете переместить сплиттер влево, но не вправо. На самом деле, если вы переместите его влево, вы больше не сможете переместить его вправо. Раньше у меня это работало, но реализация была не так хороша, и я забыл, что сделал.
Есть идеи? Я не понимаю, почему это не сработает.