Поместите панель с GridLayout
в другую панель с GridBagLayout
.
Если это единственный компонент, добавленный без GridBagConstraints
, он будет центрирован и его размер будет постоянным независимо от размера, назначенного панели с макетом мешка сетки.
Редактировать
Приведенный выше код добавляет панель, содержащую расположение кнопок в сетке, к панели extra
, определенной в основном методе (который имеет FlowLayout
).Это также будет работать для сохранения предпочтительного размера панели матрицы кнопок.
Проблема с кодом заключается в том, что после этого он игнорирует панель extra
и добавляет панель p
(с расположением кнопок в сетке) непосредственно к JFrame
с (по умолчанию) BorderLayout
.Это приводит к добавлению панели p
к CENTER
макета границы, которая растягивает компонент для заполнения доступной ширины и высоты.
Чтобы это исправить, просто измените:
f.add(p);
Кому:
f.add(extra);