文档

Java™教程
隐藏目录
如何使用GridLayout
指南: 使用Swing创建GUI
课程: 在容器中布置组件

如何使用GridLayout


注意: 本课程涵盖手动编写布局代码,这可能具有挑战性。如果您对学习布局管理的所有细节不感兴趣,可以选择使用GroupLayout布局管理器结合构建工具来布局您的GUI。其中一个构建工具是NetBeans IDE。否则,如果您想手动编码而不想使用GroupLayout,那么推荐使用GridBagLayout作为下一个最灵活和强大的布局管理器。

如果您有兴趣使用JavaFX创建GUI,请参阅JavaFX中的布局

下图是使用GridLayout类的应用程序的快照。

GridLayoutDemo的快照

点击“启动”按钮运行使用Java™ Web Start运行GridLayoutDemo(下载JDK 7或更高版本)。或者,如果要自己编译和运行示例,请查阅示例索引

启动GridLayoutDemo应用程序

这个演示的完整代码在GridLayoutDemo.java文件中。

GridLayout对象将组件放置在一个单元格网格中。每个组件占据其单元格中的所有可用空间,并且每个单元格的大小完全相同。如果调整GridLayoutDemo窗口的大小,GridLayout对象会更改单元格大小,使得单元格尽可能大,以适应容器可用的空间。

下面的代码片段创建了GridLayout对象和它管理的组件。

GridLayout experimentLayout = new GridLayout(0,2);

...

        compsToExperiment.setLayout(experimentLayout);

        compsToExperiment.add(new JButton("按钮1"));
        compsToExperiment.add(new JButton("按钮2"));
        compsToExperiment.add(new JButton("按钮3"));
        compsToExperiment.add(new JButton("较长名称的按钮4"));
        compsToExperiment.add(new JButton("5"));

GridLayout类的构造函数创建一个具有两列和必要数量行的实例。

使用组合框设置组件周围的垂直或水平填充量,然后点击“应用间隙”按钮。以下代码片段展示了如何使用GridLayout类的setVgapsetHgap方法来处理您的选择:

applyButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                //获取水平间隙的值
                String horGap = (String)horGapComboBox.getSelectedItem();
                //获取垂直间隙的值
                String verGap = (String)verGapComboBox.getSelectedItem();
                //设置水平间隙的值
                experimentLayout.setHgap(Integer.parseInt(horGap));
                //设置垂直间隙的值
                experimentLayout.setVgap(Integer.parseInt(verGap));
                //设置按钮的布局
                experimentLayout.layoutContainer(compsToExperiment);
            }
        });

GridLayout API

下表列出了GridLayout类的构造函数,指定了行数和列数。

GridLayout类的构造函数
构造函数 目的
GridLayout(int rows, int cols) 创建具有指定行数和列数的网格布局。布局中的所有组件具有相等的大小。 rowscols中的一个(但不是两个都)可以为零,这意味着任意数量的对象可以放置在一行或一列中。
GridLayout(int rows, int cols, int hgap, int vgap) 创建具有指定行数和列数的网格布局。此外,水平和垂直间隙设置为指定的值。水平间隙位于每个列之间。垂直间隙位于每个行之间。

GridLayout类有两个构造函数:

使用GridLayout的示例

以下表格列出了使用GridLayout类的代码示例,并提供了相关章节的链接。

示例 说明 备注
GridLayoutDemo 本页面 使用了2列网格。
ComboBoxDemo2 如何使用组合框 这是许多示例之一,使用了1x1的网格以使组件尽可能大。
LabelDemo 如何使用标签 使用了3行网格。

上一页: 如何使用GridBagLayout
下一页: 如何使用GroupLayout