К сожалению, с GridBagLayout
, если содержимое не заполняет весь контейнер, в котором оно находится, оно автоматически центрирует все свое содержимое в своем контейнере. Вот почему вы получаете действительно большой разрыв.
Существует два способа исправить это:
- Сложный путь: возиться с
GridBagConstraints
. Я имел ограниченный успех с этим, пытаясь избежать центрирующего поведения.
- Самый простой способ: поместите
GridBagLayout
внутрь FlowLayout
, а затем установите выравнивание FlowLayout
в верхний левый угол или как хотите.
Я задавал и отвечал: на этот вопрос сам на прошлой неделе.
Таким образом, в вашем случае вы добавляете panel1
и middlePanel
непосредственно к JFrame (?), С GridBagLayout
JFrame (GridBagLayout)
- panel1
- middlePanel
Вместо этого я бы предложил эту альтернативную структуру, чтобы избавиться от всего дополнительного пространства (и выравнивания по центру, если хотите).
JFrame (FlowLayout)
- JPanel (GridBagLayout)
- panel1
- middlePanel
НТН