之前做过一个关于使用Java建立窗口的小练习,初步学习了有关的知识,使用的是GridBagLayout管理器。
目前学习了如何使用GridBagLayout创建一定大小的窗口,建立按钮和改变按钮大小与间隔。
public class TestDouble extends JFrame {
public TestDouble() {
// 创建 GridBagLayout 实例
setTitle("窗口");
//setSize(400, 150);
GridBagLayout layout = new GridBagLayout();
setLayout(layout);
// 创建 GridBagConstraints 实例
GridBagConstraints gbc = new GridBagConstraints();
int num = 5;
for (int i = 1; i <= 5; i++) {
addbutton(layout, gbc, i, this.getContentPane());
}
// 设置窗口属性
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void addbutton(GridBagLayout layout,GridBagConstraints gbc,int i,Container container) {
JButton button = new JButton("按钮" + i);
button.setPreferredSize(new Dimension(100, 50));
int hang = 0;
if(i>5) {
hang = i / 5;
i = i % 5;
}
gbc.gridx = i - 1;
gbc.gridy = hang - 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.NONE;
gbc.weightx = 0;
gbc.weighty = 0;
gbc.insets = new Insets(10, 10, 10, 10);
layout.setConstraints(button, gbc);
container.add(button);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new TestDouble());
}
}
其中创建的 GridBagLayout 对象为容器的布局管理器,创建的 GridBagConstraints 对象用于设置组件在布局中的约束条件。
要 GridBagConstraints 里的各个属性,包括组件的位置(gridx 和 gridy)、大小(gridwidth 和 gridheight)、填充行为(fill)、内外边距(insets、ipadx 和 ipady)、对齐方式(anchor)以及权重(weightx 和 weighty)。