黑马程序员------毕老师视频笔记第22天-----图形化编程(GUI)(1)

时间:2023-01-27 13:09:20

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------


用户与计算机交互有两种方式:命令行,图形化界面

GUI(Graphical UserInterface)(图形用户接口)用图形的形式,来显示计算机操作的界面,这样更方便更直观。

CLI(Command line UserInterface)(命令行用户接口)就是常见的Dos命令行操作,需要记忆一些常用的命令,操作不直观。

 

Java为GUI提供的对象都存在于java.awt和javax.swing包中

java.awt(Abstract WindowToolkit)抽象窗口工具包,需要调用本地系统方法实现功能,重量级控件,依赖于平台。

javax.swing,在awt的基础上建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现,增强了可移植性。基于awt,又增加了更多的组件,轻量级控件

Eclipse是sun公司用自己开发的swt做的

 黑马程序员------毕老师视频笔记第22天-----图形化编程(GUI)(1)

Container作为一个组件,它里面可以添加组件

 

布局管理器

容器中的组件的排放方式,就是布局

常见的布局管理器:

FlowLayout(流式布局管理器)从左到右的顺序排列,Panel默认的布局管理器

BorderLayout(边界式布局)东南西北中,Frame默认的布局管理器

GridLayout(网格布局管理器)规则的矩阵

CardLayout(卡片布局管理器)选项卡

GridBagLayout(网格包布局管理器)非规则的矩阵

 

查阅API,Component的方法超多,用得着再查阅

Frame会创建一个窗体

构造:Frame f = new Frame(“标题”);

方法:

f.setSize(500,400);

f.setLocation(300,200);

f.add(new Button(“按钮”));

f.setLayout(new FlowLayout());

f.setVisible(true);

创建图形化界面思路:

1.创建Frame窗体

2.对窗体进行基本设置,比如大小,位置,布局等

3.定义组件

4.将组件通过窗体的add方法添加到窗体中

5.让窗体显示,通过setVisible(true)

 

Container常用子类:Window,Panel(面板,不能单独存在)

Window常用子类:Frame,Dialog

 

事件监听机制组成:事件源(组件),事件(Event),监听器(Listener),事件处理(引发事件后处理方式)

事件监听机制流程图:

黑马程序员------毕老师视频笔记第22天-----图形化编程(GUI)(1)

事件监听机制的特点:

事件源:就是awt包或者swing包中的那些图形界面组件

事件:每一个事件源都有自己的特有的对应事件和共性事件

监听器:将可以触发有一个事件的动作(不止一个)都已经封装到了监听器中

以上三者在Java中都已经定义好了,直接获取其对象就可以了,我们要做的事情就是对产生的动作进行处理。

 

确定事件源:窗体Frame f = new Frame(“标题”)

创建监听器:

WindowListener监听器接口,它的实现类WindowAdapter已经实现了WindowListener的所有方法,而且没有方法体,这样我们创建一个类继承WindowAdapter,就可以创建一个监听器,在监听器中复写父类方法就可以处理事件。

class MyWin extends WindowAdapter
{
	public void windowClosing(WindowEvent e)
<span style="white-space:pre">	</span>{
	System.exit(0);
<span style="white-space:pre">	</span>}
}

注册监听器到事件源:f.addWindowListener(new MyWin());

 

通过关闭窗体示例了解到,想要知道那个组件具备什么样的特有监听器,需要查看该组件对象的功能。

例如Button,通过查阅API,发现按钮有一个方法addActionListener(ActionListener al)方法,通过该方法可以给按钮添加监听器。ActionListener监听器接口只有一个方法,它是少数(三个)没有适配器(就像WindowListener的WindowAdapter)的监听器接口,实现那个方法就可以了。


示例:

import java.awt.*;
import java.awt.event.*;

class FrameDemo 
{
	private Frame f = null;
	private Button btn = null;
	FrameDemo()
	{
		f = new Frame("我的窗口");
		btn = new Button("按钮");
	}
	public void createMyFrame()
	{
		f.setBounds(200,200,400,400);
		f.setLayout(new FlowLayout());
		f.add(btn);
		addListener();
		f.setVisible(true);
	}
	private void addListener()
	{
		f.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});
		btn.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				System.exit(0);
			}
		});
	}
	public static void main(String[] args) 
	{
		new FrameDemo().createMyFrame();
	}
}

黑马程序员------毕老师视频笔记第22天-----图形化编程(GUI)(1)


---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------