Попытка построить об этом GUI в Swing:GridBagLayouts в GridLayout
В моей MainFrame я установил GridLayout как, что для достижения 1 ряд, 2 колонки:
setLayout(new GridLayout(1, 2));
В В левой колонке i мне нужен GridBagLayout, как в правой колонке. Обычный GridLayout больше не работает, потому что я хочу разные размеры каждой строки. В левой колонке я пробовал это:
GridBagConstraints gbc = new GridBagConstraints();
mapPanel = new MapPanel(map);
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridheight = 10;
add(mapPanel, gbc);
controlPanel = new JPanel();
controlPanel.add(new JButton("Test"));
controlPanel.add(new JButton("Test 2"));
controlPanel.add(new JButton("Test 3"));
controlPanel.add(new JButton("Test 4"));
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridheight = 1;
add(controlPanel, gbc);
logPanel = new LogPanel();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = 0;
gbc.gridy = 2;
gbc.gridheight = GridBagConstraints.REMAINDER;
add(logPanel, gbc);
Это, однако, приведет к тому, что все «упаковано вместе» в левом столбце. Он не будет расширяться до 100% высоты и 50% ширины колонки. Как я могу получить графический интерфейс, как на картинке?
Спасибо!
ли вы экспериментировать с 'setPreferredSize (Dimension)' компонентов, которые вы макет? Это свойство тесно связано с тем, как менеджеры макетов приводят результат. –
@HummelingEngineering См. [Следует избегать использования методов набора (Предпочтительный | Максимальный | Минимум) в Java Swing?] (Http://stackoverflow.com/q/7229226/418556) (Да.) –
@AndrewThompson Я согласен лучше не настраивать предпочтительный размер компонента, но менеджеры макетов, как правило, используют их, даже если они не установлены «нами». Мой комментарий указывал в этом направлении ... надеюсь, что мой ответ немного лучше. –