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对话框组件默认布局方法。
案例:安放5个按钮,如上图
代码:
package com.panhui;
import java.awt.*;
import javax.swing.*;
//继承JFrame
public classDemo10_12_1 extends JFrame{
//定义组件
JButtonjb1,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);
}
}
截图:
注意事项:
1, 不是5个部分都必须要添加的。
2, 中部组件会自动的调节大小
3, JFrame,JDialog默认布局管理器就是BorderLayout。
流式布局FlowLayout
按照组件的添加次序将按钮组件(也可以是别组件)从左到右放置在容器中。档到达容器的边界时,组件将放置在下一行。可以左对齐,居中对齐,右对齐排列组件
案例:
package com.panhui;
import java.awt.*;
import javax.swing.*;
public classDemo10_12_2 extends JFrame{
//定义需要的组件
JButtonjb1,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);
}
}
截图:
很明显这不是想要的结果。
原因:JFrame默认的布局管理器的边界布局管理,所以要哪个布局管理,需要在程序中指明。
//设置布局管理器(左对齐)
this.setLayout(new FlowLayout(FlowLayout.LEFT));
窗口大小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 = 9;
JButtonjbs[]=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);
}
}
截图:
注意事项:
1, 组件的相对位置不随容器的缩放而改变。
2, 所有的组件的大小是一样的
3, 可以通过GridLayout(int rows,int clos,inthgap,int vgap)
Rows:行数,
Cols:列数
Hgap:垂直间隙
Vgap: 水平间隙
布局管理器生成的步骤
1.继承JFrame
* 2.定义你需要的组件
* 3,创建组件(构造函数)
* 4,添加组件
* 5,窗体设置。
* 6,显示窗体