十八、java-GUI之网格布局(GridLayout)

版权声明:本文为博主学习记录,分享心得为主,转载前请在评论区留言,谢谢同样爱学习的你。 https://blog.csdn.net/qq_33639584/article/details/55050948

GridLayout(网格布局)

1、GridLayout布局特征

网格布局特点:

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

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

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

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

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

4. 设置行数和列数时,行数或者列数可以有一个为零。(即不限)

若rows为0,cols为3,则列固定为3,行不限,每行只能放3个

若cols为0,rows为3,则行固定为3,列不限,每行必定有控件

5. 至于其他规则,很明显啦。

假设你有13个控件,你又设置了三行,一行五个,你觉得第三行应该有多少个?

并且如果组件数量超过设定的个数,布局管理器会自动增加网格个数,原则是保持行数不变。就是

假设还是13个控件,你设置了两行,一行五个,放不下系统就给加了行,第三行放多出来的三个)

2、网格布局GridLayout类的常用构造函数和方法

构造方法摘要

GridLayout()

默认值的网格布局,组件一行一列。

GridLayout

(int rows, int cols)

具有指定行列的网格布局。

Rows为行数,cols为列数。

GridLayout

(int rows,int cols,

int hgap,int vgap)

指定行数、列数,

并指定组件水平、纵向间距。

方法摘要

int getRows()

获取此布局中的行数。

int getColumns()

获取此布局中的列数。

int getHgap()

获取组件之间的水平间距。

int getVgap()

获取组件之间的垂直间距。

void setRows(int rows)

将此布局中的行数设置为指定值。

void setColumns(int cols)

将此布局中的列数设置为指定值。

void setHgap(int hgap)

将组件之间的水平间距设置为指定值。

void setVgap(int vgap)

将组件之间的垂直间距设置为指定值。

void removeLayoutComponent

(Component comp)

从布局移除指定组件。

String toString()

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

3、网格布局实例

实例://GridLayoutDemo.Java

package gridlayoutdemo;

import java.awt.*;

import javax.swing.*;

 

class GridFrame extends JFrame{

    //定义文本框

    JTextArea  t = new  JTextArea(); 

    //定义面板,并设置为网格布局,5行4列,组件水平、垂直间距均为3,计算器按钮在面板内

    JPanel  p = new JPanel(new GridLayout(5,4,3,3));

    //定义字符串数组,为按钮的显示文本赋值,注意字符元素的顺序与循环添加按钮保持一致

    String  str[]={"()","π","←","+","7","8","9","-","4","5","6","*","1","2","3","/","C","0",".","="};

    public  GridFrame(String s){

        super(s);  //为窗体名称赋值

        setLayout(new BorderLayout()); //定义窗体布局为边界布局

        JButton  btn[];  //声明按钮数组

        btn = new JButton[str.length];  //创建按钮数组

         //循环定义按钮,并添加到面板中

        for (int i=0;i<str.length;i++) {

           btn[i] = new JButton ( str[i] );

           btn[i].setFont(new Font ( "微软雅黑" , Font.PLAIN , 22));//设置按钮字体

           p.add(btn[i]);

         }

       

         //将文本框放置在窗体NORTH位置

        getContentPane().add(t,BorderLayout.NORTH);    

         //将面板放置在窗体CENTER位置

        getContentPane().add(p,BorderLayout.CENTER);

        

        setSize(250,200);   //设置大小

        setLocationRelativeTo(null);   //让窗体居中显示

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setVisible(true);  //设置显示

         }

    public static void main (String[] args){

       GridFrame  gl = new GridFrame("网格布局计算器");   //生成对象并设置标题为 网格布局计算器

    }

 

猜你喜欢

转载自blog.csdn.net/qq_33639584/article/details/55050948
今日推荐