Дать нам картину того, что он в настоящее время делает, на самом деле не помогает, потому что мы не знаем, чего вы пытаетесь достичь, и трудно сделать точное предложение.
Итак, что мы видим, это попытка:
- показать 3 кнопки сверху
- заполнить оставшуюся область внизу текстовой областью
Так что я бы посоветовал вам никогда не использовать один менеджер раскладки. Во многих случаях сочетание менеджеров компоновки проще.
Итак, я бы предложил вам:
- использовать BorderLayout в качестве основного макета.
- создать панель для кнопки и добавить к
Page_START
BorderLayout
- добавить панель прокрутки к
CENTER
BorderLayout.
Итак, основной код будет:
setLayout( new BorderLayout() );
JPanel buttonsPanel = new JPanel();
buttonsPanel.add(run);
buttonsPane.add((open);
buttonsPanel.add(exit);
add(buttonsPanel, BorderLayout.PAGE_START);
JTextArea textArea = new JTextArea(10, 30); // give text area a default preferred size
add(new JScrollPane(textArea), BorderLayout.CENTER);
Гораздо проще и меньше кода, чем пытаться использовать GridBagLayout.
Однако, если вы хотите практиковать использование GridBagLayout, сначала прочитайте учебник Swing по Как использовать GridBagLayout для получения дополнительной информации об ограничениях.
Базовый код может выглядеть примерно так:
gbc.gridx = 0;
gbc.gridy = 0;
add(run, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
add(open, gbc);
gbc.gridx = 2;
gbc.gridy = 0;
add(exit, gbc);
localConsole = new JTextArea(5, 20);
JScrollPane scrollPane = new JScrollPane(localConsole);
gbc.fill = GridBagConstraints.CENTER;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 3; // try this with 1 and 2 to see the difference.
add(scrollPane, gbc);
То есть вы не можете просто случайным образом использовать значения gridx / gridy / gridwidth / gridheight.
Компоненты должны отображаться в сетке. Вы не можете оставить пробелы в сетке.
Так что, если вы хотите, чтобы кнопки располагались в строке, вам нужно последовательно увеличивать gridx для того же значения gridy.
Если вы хотите, чтобы текстовая область под кнопками увеличивала сетку последовательно и начинала с нового значения gridx.