Сетка сетки Java
-
26-10-2019 - |
Вопрос
Я создал программу Java, которая показывает сетку кнопок и ярлыков, и я хочу знать, как наладить ограничения на этикетках и кнопках, чтобы они не повторно размер, когда окно вытаскивается .. Кто-нибудь может помочь, пожалуйста?
Это мой класс Gridlayout
package JFrameTester;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class layout extends JFrame {
JButton button1,button2,button3;
JLabel label1,Label2,Label3;
public layout (){
setLayout(new GridLayout(2, 2));
button1 = new JButton ("button1");
add(button1);
label1 = new JLabel ("label1");
add(label1);
button2 = new JButton ("button1");
add(button2);
Label2 = new JLabel ("Label2");
add(Label2);
button3 = new JButton ("button1");
add(button3);
Label3 = new JLabel ("Label3");
add(Label3);
}
}
И это мой основной класс
public class JFrameTester {
/**
* @param args
*/
public static void main(String[] args) {
layout Lay = new layout();
Lay.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Lay.setVisible(true);
// JFrame frame = new JFrame("BUY COMPUTER");
Lay.setSize(800, 600);
//frame.pack();
// frame.setVisible(true);
Lay.addWindowListener(new MyWindowListener());
}
}
Решение
Поместите этикетки и кнопки в JPanel
, а затем добавьте это JPanel
на ваш GridLayout
. GridLayout
Автоматически изменения размера компонентов, чтобы соответствовать размеру ячейки, в которую они помещаются, и когда JFrame
Изменен, он будет регулировать размер компонентов по мере необходимости. Если вы поместите их в JPanel
S только JPanel
В этой ячейке будет изменен, а не компоненты.
РЕДАКТИРОВАТЬ
В дополнение к этому, это Java Practice, чтобы назвать все классы с помощью заглавной буквы, ваша layout
должно быть Layout
. Анкет Однако имя Layout
точно не передает цель класса Layout
как ваш класс не а макет, это JFrame
. Анкет Возможно LayoutFrame
было бы лучшим названием класса.
И (это по умолчанию Java Practice) переменные должны быть Camelcase, начиная с строчной буквы и последующих слов, имеющих заглавную букву, например, thisIsAVariable
. Анкет В качестве альтернативы вы могли бы использовать подчеркивание, что не является нормальной практикой Java, this_is_a_varaible
. Анкет Учитывая, что в классах Java обычно начинаются с заглавной буквы, а переменные начинаются с строчной буквы layout Lay = new layout();
Выглядит очень странно и немного запутанно с первого взгляда.