如何使用 GridLayout

Note:

本课涵盖了手工编写布局代码,这可能会很困难。如果您不希望了解布局 管理 的所有详细信息,则可能更喜欢将GroupLayout布局 管理 器与构建器工具结合使用来布局 GUI。 NetBeans IDE是此类构建器工具之一。否则,如果您想手工编码并且不想使用GroupLayout,那么推荐使用GridBagLayout作为下一个最灵活,功能最强大的布局 管理 器。

如果您对使用 JavaFX 创建 GUI 感兴趣,请参阅在 JavaFX 中使用布局

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

GridLayoutDemo 的快照

单击启动按钮以使用Java™Web 开始(下载 JDK 7 或更高版本)运行 GridLayoutDemo。另外,要自己编译和运行示例,请查阅example index

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

GridLayout对象将组件放置在单元格网格中。每个组件占用其单元中的所有可用空间,并且每个单元的大小完全相同。如果调整了GridLayoutDemo窗口的大小,则GridLayout对象将更改单元格大小,以便在容器具有可用空间的情况下,单元格尽可能大。

下面的代码段创建了GridLayout对象及其 管理 的组件。

GridLayout experimentLayout = new GridLayout(0,2);

...

        compsToExperiment.setLayout(experimentLayout);

        compsToExperiment.add(new JButton("Button 1"));
        compsToExperiment.add(new JButton("Button 2"));
        compsToExperiment.add(new JButton("Button 3"));
        compsToExperiment.add(new JButton("Long-Named Button 4"));
        compsToExperiment.add(new JButton("5"));

GridLayout类的构造函数创建一个实例,该实例具有两列和所需的行数。

使用组合框可以设置围绕组件放置多少垂直或水平填充。然后单击“应用间隙”按钮。以下代码段显示了如何使用GridLayout类的setVgapsetHgap方法处理您的选择:

applyButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                //Get the horizontal gap value
                String horGap = (String)horGapComboBox.getSelectedItem();
                //Get the vertical gap value
                String verGap = (String)verGapComboBox.getSelectedItem();
                //Set up the horizontal gap value
                experimentLayout.setHgap(Integer.parseInt(horGap));
                //Set up the vertical gap value
                experimentLayout.setVgap(Integer.parseInt(verGap));
                //Set up the layout of the buttons
                experimentLayout.layoutContainer(compsToExperiment);
            }
        });

GridLayout API

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

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

GridLayout类具有两个构造函数:

使用 GridLayout 的示例

下表列出了使用GridLayout类的代码示例,并提供了指向相关部分的链接。

ExampleWhere DescribedNotes
GridLayoutDemoThis page使用 2 列网格。
ComboBoxDemo2如何使用组合框使用 1x1 网格使组件尽可能大的许多示例之一。
LabelDemo如何使用标签使用 3 行网格。