Java—图形界面(2)

按钮组件---JButton

1,JButton是AbstractButton的子类

2,属于容器类组件,可以加入别的组件

3,Swing包的按钮组件不只是utton,还有单选按钮(JRadioButton)、箭头按钮(BasicArrowButton)、触发器按钮(JToggleButton)………

 

布局管理器—介绍

1概念

 组件在容器中的位置和大小是有布局管理器来决定的。所有的容器都会使用一个布局管理器,通过它来自动进行组件的布局管理

2,种类

Java提供了5种布局管理器:流式布局管理器(FlowLayout)、边界布局管理器(BorderLayout),网格布局管理器(GridLayout),卡片布局管理器(CardLayout),网格包布局管理器(GridBagLayout)。前三个是常见的布局管理器.

 

边界布局管理器

将容器划分成东南西北中5个区域,中间区域最大

JFrame窗体,JDialog对话框组件默认布局方法。

gui java 多个按钮 java按钮形状_java

 

案例:安放5个按钮,如上图

代码:

package com.panhui;
import java.awt.*;
import javax.swing.*;
 
//继承JFrame
public classDemo10_12_1  extends JFrame{
 
//定义组件
jb1,jb2,jb3,jb4,jb5;
   
   
   
    public static void main(String[] args) {
 // TODO Auto-generated method stub
         Demo10_12_1 demo10_12_1 = new Demo10_12_1();
    }
   
//构造方法
    public Demo10_12_1()
    {
 //创建组件
jb1 = newJButton("中部");
jb2 = newJButton("北部");
jb3 = newJButton("东部");
jb4 = newJButton("南部");
jb5 = newJButton("西部");
               
 //添加组件
        this.add(jb1,BorderLayout.CENTER);
        this.add(jb2,BorderLayout.NORTH);
        this.add(jb3,BorderLayout.EAST);
        this.add(jb4,BorderLayout.SOUTH);
        this.add(jb5,BorderLayout.WEST);
       
 //设置窗体属性
        this.setTitle("边界布局案例");
        this.setSize(300,300);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
 //显示窗口
        this.setVisible(true);
    }
 
}

 

截图:

gui java 多个按钮 java按钮形状_swing_02

 

注意事项:

1, 不是5个部分都必须要添加的。

2, 中部组件会自动的调节大小

3, JFrame,JDialog默认布局管理器就是BorderLayout。

 

 

 

流式布局FlowLayout

按照组件的添加次序将按钮组件(也可以是别组件)从左到右放置在容器中。档到达容器的边界时,组件将放置在下一行。可以左对齐,居中对齐,右对齐排列组件

案例:

package com.panhui;
import java.awt.*;
import javax.swing.*;
 
 
public classDemo10_12_2 extends JFrame{
 
//定义需要的组件
jb1,jb2,jb3,jb4,jb5,jb6;
   
    public static void main(String[] args)  {
 // TODO Auto-generated method stub
        Demo10_12_2 demo10_12_2=new Demo10_12_2();
    }
   
    public Demo10_12_2()
    {
 //创建组件
 jb1=new JButton("1");
 jb2=new JButton("2");
 jb3=new JButton("3");
 jb4=new JButton("4");
 jb5=new JButton("5");
 jb6=new JButton("6");
       
 //添加组件
        this.add(jb1);
        this.add(jb2);
        this.add(jb3);
        this.add(jb4);
        this.add(jb5);
        this.add(jb6);
       
 //设置窗口的属性
        this.setTitle("流式布局案例");
        this.setSize(300,300);
        this.setLocation(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
 //显示窗口
        this.setVisible(true);
    }
   
 
}

截图:

gui java 多个按钮 java按钮形状_gui java 多个按钮_03

 

很明显这不是想要的结果。

原因:JFrame默认的布局管理器的边界布局管理,所以要哪个布局管理,需要在程序中指明。

//设置布局管理器(左对齐)

        this.setLayout(new FlowLayout(FlowLayout.LEFT));

gui java 多个按钮 java按钮形状_图形_04

窗口大小200*200的

流式布局FlowLayout注意事项

1, 不限制它所管理的组件的大小,允许他们有最佳大小

2, 当容器被缩放的时,组件的位置可能变化,但是组件的大小是不会变化的,例如,如果用程序改变按钮的大小,那么出来的按钮的大小是不会被改变的。

3, 默认组件的位置是居中对齐,但是可以通过FlowLayout()函数来指定对齐方式,。

4, 在开发中,一般会禁止用户调整窗口的大小。

//禁止改变窗体的大小

     this.setResizable(false);

 

 

 

 

网格布局管理器

可以将组件按照几行几列排,而且按钮的大小都是一样。

程序:

package com.panhui;
import java.awt.*;
import javax.swing.*;
 
public classDemo10_12_3 extends JFrame {
 
//定义组件
   
    int size
jbs[]=new JButton[size];//数组的初始化
   
    public static void main(String[] args) {
 // TODO Auto-generated method stub
       Demo10_12_3 demo = new Demo10_12_3();
       
    }
   
//构造
    public Demo10_12_3()
    {
 //创建组件
        for(int i = 0;i <  size;i++ )
        {
 jbs[i] = new JButton(String.valueOf(i));
        }
       
 //设置网格布局3行3列,按钮的间隔10
        this.setLayout(new GridLayout(3,3,10,10));
       
 //添加组件
        for(int i = 0;i <  size;i++)
        {
            this.add(jbs[i]);
        }
       
 //设置窗口的属性
        this.setTitle("网格布局案例");
        this.setSize(200,200);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocation(200,200);
       
 //显示
         this.setVisible(true);
    }
}

截图:

gui java 多个按钮 java按钮形状_java_05

 

注意事项:

1, 组件的相对位置不随容器的缩放而改变。

2, 所有的组件的大小是一样的

3, 可以通过GridLayout(int rows,int clos,inthgap,int vgap)

Rows:行数,

Cols:列数

Hgap:垂直间隙

Vgap: 水平间隙

 

 

布局管理器生成的步骤

1.继承JFrame

 * 2.定义你需要的组件

 * 3,创建组件(构造函数)

 * 4,添加组件

 * 5,窗体设置。

 * 6,显示窗体