Swing-布局管理器之GridLayout(网格布局)-入门

注:本文内容源自于三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局),笔者在学习过程中根据自身理解修改了部分代码。

网格布局特点:

l  使容器中的各组件呈M行×N列的网格状分布。

l  网格每列宽度相同,等于容器的宽度除以网格的列数。

l  网格每行高度相同,等于容器的高度除以网格的行数。

l  各组件的排列方式为:从上到下,从左到右。

l  组件放入容器的次序决定了它在容器中的位置。

l  容器大小改变时,组件的相对位置不变,大小会改变。

l  设置网格布局行数和列数时,行数或者列数可以有一个为零。若rows为0,cols为3,则列数固定为3,行数不限,每行只能放3个控件或容器。若cols为0,rows为3,则行数固定为3,列数不限,且每行必定有控件,若组件个数不能整除行数,则除去最后一行外的所有行组件个数为:Math.ceil(组件个数/rows)。

Math.ceil(double x):传回不小于x的最小整数值。比如行数为3,组件数为13个,则Math.ceil(13/3)=5,即第一行,第二行组件数各为5个,剩下的组件放在最后一行。

l  若组件数超过网格设定的个数,则布局管理器会自动增加网格个数,原则是保持行数不变。

构造方法摘要

GridLayout(): 创建具有默认值的网格布局,即每个组件占据一行一列。

GridLayout(int rows, int cols) :创建具有指定行数和列数的网格布局。Rows为行数,cols为列数。

GridLayout(int rows, int cols, int hgap, int vgap) :创建具有指定行数、列数以及组件水平、纵向一定间距的网格布局。

方法摘要

getColumns() :获取此布局中的列数。

getHgap():获取组件之间的水平间距。

getRows() :获取此布局中的行数。

getVgap() :获取组件之间的垂直间距。

removeLayoutComponent(Component comp) :从布局移除指定组件。

setColumns(int cols) :将此布局中的列数设置为指定值。

setHgap(int hgap):将组件之间的水平间距设置为指定值。

setRows(int rows):将此布局中的行数设置为指定值。

setVgap(int vgap) :将组件之间的垂直间距设置为指定值。

toString():返回此网格布局的值的字符串表示形式。

demo:GridLayoutDemo.java

import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingConstants;

/*
 * 2015-06-10
 */

public class GridLayoutDemo extends JFrame{

    JButton resultButton = new JButton("0");
    JPanel panel = new JPanel();

    public GridLayoutDemo()
    {
        //set to BorderLayout
        setLayout(new BorderLayout());

        add(resultButton, BorderLayout.NORTH);
        add(panel, BorderLayout.CENTER);

        //gridLayout
        GridLayout gridLayout = new GridLayout(4,4,3,3);
        panel.setLayout(gridLayout);

        //add buttons
        String [] buttonNames = new String []{"7", "8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};
        for (String string : buttonNames) {
            panel.add(new JButton(string));
        }
        //config resultButton
        resultButton.setSize(200, 50);
        resultButton.setHorizontalAlignment(SwingConstants.RIGHT);
        resultButton.setEnabled(false);        

        //setSize(250,200);
        pack();
        setTitle("GridLayoutDemo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        GridLayoutDemo demo = new GridLayoutDemo();
        demo.setVisible(true);
    }

}

运行界面如图1所示:

图1 运行效果

图 2 缩放效果

  可以看到,使用gridLayout后,其中控件的宽高尺寸根据窗体的缩放进行相应的适配。

时间: 2024-12-26 22:50:38

Swing-布局管理器之GridLayout(网格布局)-入门的相关文章

三十一、Java图形化界面设计——布局管理器之GridLayout(网格布局)

摘自http://blog.csdn.net/liujun13579/article/details/7772491 三十一.Java图形化界面设计--布局管理器之GridLayout(网格布局) 网格布局特点: l  使容器中的各组件呈M行×N列的网格状分布. l  网格每列宽度相同,等于容器的宽度除以网格的列数. l  网格每行高度相同,等于容器的高度除以网格的行数. l  各组件的排列方式为:从上到下,从左到右. l  组件放入容器的次序决定了它在容器中的位置. l  容器大小改变时,组件

布局管理器之CardLayout(卡片布局管理器)

对于选项卡这个概念大家可能不会陌生,就是在一个窗口中可以切换显示多页不同的内容,但同一时间只能是其中的某一页可见的,这样的一个个的页面就是选项卡. CardLayout就是类似的这样一个布局管理器,它能够让多个组件共享同一个显示空间,共享空间的组件之间的关系就像重叠在一起的一幅扑克牌,组件重叠在一起,初始时显示该空间中第一个组件,通过CardLayout类提供的方法可以切换该空间中显示的组件. 下面我们来看一个例子,实现CardLayout布局管理器的使用. 创建一个使用CardLayout布局

布局Layouts之GridLayout网格布局

原文地址http://blog.csdn.net/jianghuiquan/article/details/8299973 GridLayout网格布局 android4.0以上版本出现的GridLayout布局解决了以上问题.GridLayout布局使用虚细线将布局划分为行.列和单元格,也支持一个控件在行.列上都有交错排列.而GridLayout使用的其实是跟LinearLayout类似的API,只不过是修改了一下相关的标签而已,所以对于开发者来说,掌握GridLayout还是很容易的事情.G

Java图形化界面设计——布局管理器之GridLayout(网格布局) 之计算器

代码如下: import java.awt.*; import javax.swing.*; public class GridFrame extends JFrame { // 定义字符串数组,为按钮的显示文本赋值 String str[] = { "MC", "MR", "MS", "M+", "←", "C", "%", "π", "

java进阶10 GUI图形界面 布局管理器之FlowLayout GridLayout

先说说FlowLayout 流式布局管理器. 效果 这是当第一行显示不下,才转到第二行的. 看看代码 package Frame; import java.awt.BorderLayout; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class MyLayout{ JFrame frame; public MyLayout(JFrame frame) { //

Android基础入门教程——2.2.5 GridLayout(网格布局)

Android基础入门教程--2.2.5 GridLayout(网格布局) 标签(空格分隔): Android基础入门教程 本节引言: 今天要介绍的布局是Android 4.0以后引入的一个新的布局,和前面所学的TableLayout(表格布局) 有点类似,不过他有很多前者没有的东西,也更加好用, 可以自己设置布局中组件的排列方式 可以自定义网格布局有多少行,多少列 可以直接设置组件位于某行某列 可以设置组件横跨几行或者几列 另外,除了上述内容外,本节还会给大家使用gridLayout时会遇到的

java Swing布局管理之GridLayout布局

GridLayout 类是一个布局处理器,它以矩形网格形式对容器的组件进行布置.容器被分成大小相等的矩形,一个矩形中放置一个组件 GridLayout网格布局特点:容器的空间划分成M×N列的网格区域, 每个区域只能放置一个组件.使容器中的各组件呈M行×N列的网格状分布. 网格每列宽度相同,等于容器的宽度除以网格的列数.网格每行高度相同,等于容器的高度除以网格的行数.各组件的排列方式为:从上到下,从左到右. 1.构造函数 GridLayout(): 创建具有默认值的网格布局,即每个组件占据一行一列

java进阶09 GUI图形界面 布局管理器之BorderLayout

前面虽然实现了窗口,但是一般的应用有很多其他东西,如按钮,输入框之类的. 而这些都是建立在一个东西上面的,那就是布局管理器. 常用的布局管理器有3个 BorderLayout:边界布局管理器 FlowLayout:流式布局管理器 GridLayout:网格布局管理器 今天先说说BorderLayout 我们先修改下UI类,这次是最后一次修改,这次会将UI类与管理器和控件彻底分开,再也不用操作UI类 package Frame; import javax.swing.JFrame; public

Android零基础入门第32节:新推出的GridLayout网格布局

原文:Android零基础入门第32节:新推出的GridLayout网格布局 本期主要学习的是网格布局是Android 4.0新增的布局,和前面所学的TableLayout表格布局 有点类似,不过他有很多前者没有的东西,也更加好用. 一.认识GridLayout 网格布局实现了控件的交错显示,能够避免因布局嵌套对设备性能的影响,更利于自由布局的开发.网格布局用一组无限细的直线将绘图区域分成行.列和单元,并指定控件的显示区域和控件在该区域的显示方式 下表显示了 GridLayout常用的XML属性