Поместите метки и кнопки внутри JPanel
, а затем добавьте это JPanel
к своему GridLayout
.GridLayout
автоматически изменяет размеры компонентов в соответствии с размером ячейки, в которую они помещены, и когда размер JFrame
изменяется, он корректирует размер компонентов по мере необходимости.Если вы поместите их в JPanel
s, изменится только JPanel
в этой ячейке, а не компоненты.
EDIT
В дополнение к этому это Javaпрактикуйтесь в именах всех классов заглавными буквами, ваш layout
должен быть Layout
.Однако имя Layout
не совсем точно отражает цель класса Layout
, поскольку ваш класс - это не a макет, это JFrame
.Возможно, LayoutFrame
было бы лучшим именем класса.
И (это практика по умолчанию на Java) переменные должны быть в верблюдах, начиная со строчной буквы и следующих слов, имеющих заглавную букву, например thisIsAVariable
.В качестве альтернативы вы можете использовать подчеркивание, что не является обычной практикой Java, this_is_a_varaible
.Учитывая, что в Java классы обычно начинаются с заглавной буквы, а переменные начинаются со строчной буквы, выражение layout Lay = new layout();
на первый взгляд выглядит очень странным и немного запутанным.