黑马程序员_JavaSE基础知识总结十七:GUI界面

------ android培训 java培训 、期待与您交流! ----------


1、图形用户界面(gui)介绍

图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作。

awt,swing,swt,Jface是什么?

Sun已经提供了一个跨平台GUI开发工具包AWT抽象窗口工具箱(Abstract Window Toolkit).

Sun又创建了一个新的GUI框架swing.解决了AWT存在的Icd问题.

IBM认为swing比较消耗内存,创建了一个新的GUI库,这就是SWT

IBM为了方便开发SWT程序,在SWT基础上又创建了一个更易用,功能强大的图开包"JFace"

 

2、eclipse开发工具介绍

eclipse是什么东西,我们用三句话来说明:

1、eclipse最早是IBM附属公司oti开发的,一共投入了4000万美金,后来捐献给开源社区

2、eclipse是一个开源的、可扩展的集成开发环境,已经成为目前最流行的java开发工具

3、eclipse安装后就可以开发java se的项目了,但不能开发java ee项目,需要安装web开发插件(lomboz或是myeclipse..)

ide(集成开发环境,比如jcreator、vs、myeclipse这些开发工具都是ide)

 

3、swing组件介绍

1、JFrame是Frame的子类

2、属于容器类组件,顶层容器

3、JFrame有一些常用的方法,通过示例与java的帮助文档即可了解。


按钮组件为什么有?

在图形用户界面编程中,我们在窗体中会经常使用到按钮,我们在进行选择的时候,常常需要确认,所以按钮很重要。

 

按钮组件怎么用?

只需要在窗体中添加按钮组件(JButton)即可完成。

 

按钮组件--深入讨论

1、JButton是AbstractButton的子类

2、属于窗口类组件,可以加入别的组件

3、Swing包的按钮组件不只有JButton,还有单选按钮(JRadioButton)、箭头按钮(BasicArrowButton)、触发器按钮(JToggleButton)..这些按钮我们在后面讲解。

 

//功能:GUI界面开发演示[Window001.java]

<span style="font-size:18px;color:#333333;">import java.awt.*;//开发图形要引入java.awt.*包
import javax.swing.*;//开发图形要引入javax.swing.*包
public class Window001 extends JFrame{//继承JFrame顶层容器类(可以添加其它swing组件的类)
	//把需要的swing组件,定义到这里
	JButton jb1=null;
	
	public static void main(String[] args) {
		Window001 win=new Window001();
	}

	//构造函数
	public Window001(){
		//创建一个button按钮
		jb1=new JButton("按钮");
		
		//添加JButton组件
		this.add(jb1);
		
		//给窗体设置标题
		this.setTitle("Hello World!");
		
		//设置窗体大小,按像素设置大小
		this.setSize(500, 500);
		
		//设置窗体初始位置
		this.setLocation(500, 150);
		
		//设置当关闭窗口时,保证JVM也退出
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//显示窗体
		this.setVisible(true);//true显示,false不显示
	}

}
</span>

4、三大常用布局管理器

布局管理器--介绍

1、概念

    组件在容器(比如JFrame)中的位置和大小是由布局管理器来决定的。所有的容器都会

使用一个布局管理器,通过它来自动进行组件的布局管理。

2、种类

    java共提供了五种布局管理器流式布局管理器(FlowLayout)边界布局管理器(BorderLayout)网格布局管理器(GridLayout)卡片布局管理器(CardLayout)网格包布局管理器(GridBagLayout)。其中前三种是最常见的布局管理器。

 

边界布局BorderLayout--介绍

    边界布局(BorderLayout)将容器简单的划分为东南西北5个区域,中间区域最大。

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

边界布局BorderLayout--使用[Window002.java]

<span style="font-size:18px;color:#333333;">/**
 * 边界布局BorderLayout使用演示
 * 1、继承JFrame
 * 2、定义你需要的各个组件
 * 3、创建组件(在构造函数中组件)
 * 4、添加组件
 * 5、对窗体设置
 * 6、显示窗体
 */
import java.awt.*;
import javax.swing.*;
public class Window002 extends JFrame{
	//定义组件
	JButton jb1,jb2,jb3,jb4,jb5;
	
	public static void main(String[] args) {
			Window002 win=new Window002();

	}
	
	public Window002(){
		//创建组件
		jb1=new JButton("中部");
		jb2=new JButton("北部");
		jb3=new JButton("东部");
		jb4=new JButton("南部");
		jb5=new JButton("西部");
		
		//添加各个组件
		this.add(jb1, BorderLayout.CENTER);//BorderLayout.CENTER添加到中部
		this.add(jb2, BorderLayout.NORTH);//BorderLayout.NORTH添加到北部
		this.add(jb3, BorderLayout.EAST);//BorderLayout.EAST添加到东部
		this.add(jb4, BorderLayout.SOUTH);//BorderLayout.SOUTH添加到南部
		this.add(jb5, BorderLayout.WEST);//BorderLayout.WEST添加到西部
		
		//设置窗体属性
		this.setTitle("边界布局演示");//窗体标题名称
		this.setSize(300, 200);//窗体尺寸
		this.setLocation(200, 200);//窗体在屏幕打开时的初始位置
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出窗体后将JFrame同时关闭

		//显示窗体
		this.setVisible(true);
	}
}</span>

边界布局BorderLayout--注意事项

1、不是五个部分都必需添加;

2、中部组件会自动调节大小;

3、JFrame,Jdialog默认布局管理器就是BorderLayout

 

三大常用布局管理器--流式布局

流式布局FlowLayout--介绍

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

 

流式布局FlowLayout--使用[Window003.java]

<span style="font-size:18px;color:#333333;">/**
 * 流式布局FlowLayout使用演示
 * 1、继承JFrame
 * 2、定义你需要的各个组件
 * 3、创建组件(在构造函数中组件)
 * 4、添加组件
 * 5、对窗体设置
 * 6、显示窗体
 */
import java.awt.*;
import javax.swing.*;
public class Window003 extends JFrame{
	//定义组件
	JButton jb1,jb2,jb3,jb4,jb5,jb6;
	
	public static void main(String[] args) {
			Window003 win=new Window003();
	}
	
	public Window003(){
		//创建组件
		jb1=new JButton("关羽");
		jb2=new JButton("张飞");
		jb3=new JButton("赵云");
		jb4=new JButton("马超");
		jb5=new JButton("黄忠");
		jb6=new JButton("魏延");
		
		//添加各个组件
		this.add(jb1);
		this.add(jb2);
		this.add(jb3);
		this.add(jb4);
		this.add(jb5);
		this.add(jb6);
		
		//设置布局管理器,流式布局默认为居中对齐
		this.setLayout(new FlowLayout(FlowLayout.LEFT));
//new FlowLayout(FlowLayout.LEFT)流式布局,(FlowLayout.??)??可以设置为不同方式对齐。
		//设置窗体属性
		this.setTitle("流式布局演示");//窗体标题名称
		this.setSize(300, 200);//窗体尺寸
		this.setLocation(200, 200);//窗体在屏幕打开时的初始位置
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出窗体后将JFrame同时关闭

		//禁止用户改变窗体大小
		this.setResizable(false);

		//显示窗体
		this.setVisible(true);
	}
}</span>

流式布局FlowLayout--注意事项

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

2、当容器衩缩放时,组件的位置可能变化,但组件的大小不变。

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

 

三大常用布局管理器--网格

网格布局GridLayout--介绍

GridLayout布局,听其名而知其意,它将容器分割成多行多列,组件被填充到每个网格中,添加到容器中的组件首先放置在左上角的网格中,然后从左到右放置其它的组件,当占满该行的所有网格后,接着继续在下一行从左到右放置组件。

 

网格布局GridLayout--使用[Window004.java]

<span style="font-size:18px;color:#333333;">/**
 * 网格布局GridLayout使用演示
 * 1、继承JFrame
 * 2、定义你需要的各个组件
 * 3、创建组件(在构造函数中组件)
 * 4、添加组件
 * 5、对窗体设置
 * 6、显示窗体
 */
import java.awt.*;
import javax.swing.*;
public class Window004 extends JFrame{
	//定义组件
	int size=9;
	JButton jbs[]=new JButton[size];
	
	public static void main(String[] args) {
			Window004 win=new Window004();
	}
	
	public Window004(){
		//创建组件
		for(int i=0;i<size;i++){
			jbs[i]=new JButton(String.valueOf(i+1));
		}
		
		//添加各个组件
		for(int i=0;i<size;i++){
			this.add(jbs[i]);
		}
		
		//设置网格布局管理器
		this.setLayout(new GridLayout(3,3,10,10));//new GridLayout(行,列)设置布局有几行几列
		
		//设置窗体属性
		this.setTitle("网格布局演示");//窗体标题名称
		this.setSize(300, 200);//窗体尺寸
		this.setLocation(200, 200);//窗体在屏幕打开时的初始位置
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出窗体后将JFrame同时关闭
		
		//禁止用户改变窗体大小
		this.setResizable(false);
		
		//显示窗体
		this.setVisible(true);
	}
}</span>

网格布局GridLayout--注意事项

1、组件的相对位置不随容器的缩放而变化,但大小会变化;

2、所有组件的大小相同;

3、可以通过GridLayout(int rows,int cols,int hgap,int vgap)来指定网格的行/列,水平间隙/垂直间隙。

参数说明:rows:行数/cols:列数/hgap:垂直间隙/vgap:水平间隙

 

三大常用布局管理器--小结

开发GUI程序步骤

1、继承JFrame

2、定义需要的组件

3、创建组件

4、设置布局管理器

5、添加组件

6、显示窗体

 

Swing组件--面板组件

面板组件(JPanel)--介绍

在图形用户界面编程中,如果只是普通的组件布局,我们用前面讲的三种布局管理器就可以解决,但在比较复杂的布局要求时,就需要使用布局管理器的组合使用。

 

面板组件(JPanel)--使用[Window005.java]

JPanel:面板组件,非顶层容器,一个界面只可以有一个JFrame窗体组件,但可以有多个JPanel面板组件,而JPanel上也可以使用FlowLayout、BorderLayout、GirdLayout等各种布局管理器,这样可以组合使用达到较为复杂的布局效果。

<span style="font-size:18px;color:#333333;">/**
 * 多种布局管理器,面板组件(JPanel)--使用
 */
import java.awt.*;
import javax.swing.*;
public class Window005 extends JFrame{
	//定义组件
	JPanel jp1,jp2;
	JButton jb1,jb2,jb3,jb4,jb5,jb6;
	public static void main(String[] args) {
		Window005 win=new Window005();
	}
	//构造函数
	public Window005(){
		//创建组件
		jp1=new JPanel();//JPanel布局默认是FlowLayout流布局
		jp2=new JPanel();
		
		jb1=new JButton("西瓜");
		jb2=new JButton("苹果");
		jb3=new JButton("荔枝");
		jb4=new JButton("葡萄");
		jb5=new JButton("桔子");
		jb6=new JButton("香蕉");
		
		//设置布局管理器(Jpanel默认流布局)
		
		//添加JPanel
		jp1.add(jb1);
		jp1.add(jb2);
		jp2.add(jb3);
		jp2.add(jb4);
		jp2.add(jb5);
		
		//把Panel加入JFrame
		this.add(jp1, BorderLayout.NORTH);
		this.add(jb6, BorderLayout.CENTER);
		this.add(jp2, BorderLayout.SOUTH);
		
		//设置窗体
		this.setSize(300, 250);//窗体大小
		this.setLocation(200, 200);//屏幕显示初始位置
		this.setVisible(true);//显示
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出窗体后将JFrame同时关闭
	}
}</span>

面板(JPanel)组件--注意事项

1、JPanel是JComponent的子类;

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

3、默认布局管理器是流式布局(FlowLayout)

 

Swing组件--文本框/密码框/标签组件[Window006.java]

几个常用组件

在图形用户界面编程中,我们常常会提供用户登录界面,比如登录到会员管理系统,登录到工资管理系统、仓库管理系统等。这时候我们就会用到:

1、文本框(JTextField)

2、密码框(JPasswordField)

3、标签(JLable)

<span style="font-size:18px;color:#333333;">/**
 * Swing组件--文本框(JTextField)/密码框(JPasswordField)/标签(JLable)组件使用
 */
import java.awt.*;
import javax.swing.*;
public class Window006 extends JFrame{
	//定义组件
	JPanel jp1,jp2,jp3;//面板
	JLabel jlb1,jlb2;//标签
	JButton jb1,jb2;//按钮
	JTextField jtf;//文本
	JPasswordField jpf;//密码
	public static void main(String[] args) {
		Window006 win=new Window006();
	}
	
	//构造函数
	public Window006(){
		//创建面板
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		//创建标签
		jlb1=new JLabel("用户名");
		jlb2=new JLabel("密    码");
		//创建按钮
		jb1=new JButton("登录");
		jb2=new JButton("取消");
		//创建文本框
		jtf=new JTextField(10);
		//创建密码框
		jpf=new JPasswordField(10);
		
		//设置布局管理
		this.setLayout(new GridLayout(3, 1));//网格式布局
		
		//加入各个组件
		jp1.add(jlb1);
		jp1.add(jtf);
		
		jp2.add(jlb2);
		jp2.add(jpf);
		
		jp3.add(jb1);
		jp3.add(jb2);
		
		//加入到JFrame
		this.add(jp1);
		this.add(jp2);
		this.add(jp3);
		
		//设置窗体
		this.setTitle("用户登录");//窗体标签
		this.setSize(300, 150);//窗体大小
		this.setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出关闭JFrame
		this.setVisible(true);//显示窗体
		
		//锁定窗体
		this.setResizable(false);
	}
}</span>

Swing组件--复选框/单选框组件[Window007.java]

几个常用组件

在图形用户界面编程中,我们常常会提供用户注册界面,这时候我们就会用到:

1、复选框组件(JCheckBox)

2、单选框组件(JRadioBuutton)

特别说明:

    同一组单选按钮必需先创建ButtonGroup,然后把单选框组件放入到ButtonGroup中

<span style="font-size:18px;color:#333333;">/**
 * 复选框组件(JCheckBox)和单选框组件(JRadioButton)使用
 */
import java.awt.*;
import javax.swing.*;
public class Window007 extends JFrame{
	//定义组件
	JPanel jp1,jp2,jp3;
	JLabel jl1,jl2;
	JCheckBox jcb1,jcb2,jcb3;
	JRadioButton jrb1,jrb2;
	ButtonGroup bg;
	JButton jb1,jb2;
	public static void main(String[] args) {
		Window007 win=new Window007();
	}
	//构造函数
	public Window007(){
		//创建组件
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		
		jl1=new JLabel("你最喜欢的运功:");
		jl2=new JLabel("你的性别:");
		
		jcb1=new JCheckBox("足球");
		jcb2=new JCheckBox("篮球");
		jcb3=new JCheckBox("网球");
		
		jrb1=new JRadioButton("男");
		jrb2=new JRadioButton("女");
		
		jb1=new JButton("注册用户");
		jb2=new JButton("取消注册");
		
		//一定要把jrb1与jrb2放入到一个ButtonGroup中
		ButtonGroup bg=new ButtonGroup();
		bg.add(jrb1);
		bg.add(jrb2);
		
		//创建布局
		this.setLayout(new GridLayout(3, 1));
		
		//加入组件
		jp1.add(jl1);
		jp1.add(jcb1);
		jp1.add(jcb2);
		jp1.add(jcb3);
		
		jp2.add(jl2);
		jp2.add(jrb1);
		jp2.add(jrb2);
		
		jp3.add(jb1);
		jp3.add(jb2);
		
		this.add(jp1);
		this.add(jp2);
		this.add(jp3);

		//设置窗体
		this.setTitle("用户注册");
		this.setSize(300, 150);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}</span>

Swing组件--下拉框/列表框/流动空格组件[Window008.java]

在图形用户界面编程中,我们常常会提供用户调查界面,这个时候我们会用到:

1、下拉框组件(JComboBox)

2、列表框组件(JList)

3、滚动窗格组件(JScrollPane)

特别说明:

    一般来说,列表框组件+滚动窗格组件是结合使用的。目的是让列表框中的选项可以有滚动条支持。

<span style="font-size:18px;color:#333333;">/**
 * 下拉框(JComboBox)/列表框(JList)/滚动空格(JScrollPane)的使用
 */
import java.awt.*;
import javax.swing.*;
public class Window008 extends JFrame{
	//定义组件
	JPanel jp1,jp2;
	JLabel jl1,jl2;
	JComboBox jcb;
	JList jl;
	JScrollPane jsp;
	public static void main(String[] args) {
		Window008 win=new Window008();
	}
	//构造函数
	public Window008(){
		//建立组件
		jp1=new JPanel();
		jp2=new JPanel();
		
		jl1=new JLabel("你的籍贯:");
		jl2=new JLabel("旅游地点:");
		
		String[] jg={"北京","上海","天津","火星"};
		jcb=new JComboBox(jg);
		
		String[] dd={"长城","东方明珠","海河","什么什么"};
		jl=new JList(dd); 
		//设置你希望显示多少个选项
		jl.setVisibleRowCount(2);//滚动条显示setVisibleRowCount(?)?为显示条数
		jsp=new JScrollPane(jl);

		//设定布局
		this.setLayout(new GridLayout(3, 1));
		
		//加入组件
		jp1.add(jl1);
		jp1.add(jcb);
		
		jp2.add(jl2);
		jp2.add(jsp);
		
		this.add(jp1);
		this.add(jp2);
		
		//设置窗体
		this.setTitle("用户注册");
		this.setSize(300, 300);
		this.setLocationRelativeTo(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setVisible(true);
	}
}</span>










  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值