JAVA_GUI - 【适配器设计模式】窗体关闭

目录

  • GUI继承体系图
  • GUI事件监听机制
  • 适配器设计模式(为什么出现?)
  • 窗体关闭案例


<一> GUI继承体系图(java.awt)

java.awt与javax.swing?

java.awt : Abatract Window Toolkit 抽象窗口工具包,调用本地系统方法实现功能,重量级控件;

javax.swing : javax前缀表示java扩展包,javax.swing是在AWT的基础之上建立的一套图形界面系统,组件更多,功能更强大,完全由JAVA实现,依赖AWT,属于轻量级控件。

package kyleeo.util_01;

import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Point;

public class FrameDemo {
	public static void main(String[] args) {
		
		//Frame是一个带有标题和边框的顶层窗口
		Frame f = new Frame("FrameDemo");
		
		//设置窗体标题
		//f.setTitle("...");
		
		//设置窗体位置
		//f.setLocation(400, 200);
		f.setLocation(new Point(400,200));
		
		//设置窗体大小
		//f.setSize(400,300);
		f.setSize(new Dimension(400,300));    //使用匿名对象,注意与匿名内部类区分
		
		//显示窗体(show过时已被setVisible替代)
		f.setVisible(true);
		
	}
}

<二> GUI事件监听机制

事件监听:将事件源与事件绑定;

  • 事件源:产生事件的源头
  • 事件:接口
  • 事件处理:事件接口的实现类
  • 事件绑定:将事件源与事件接口绑定(实际上是与事件接口的实现类绑定,多态向上转型) 
package kyleeo.util_01;

import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Point;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class FrameDemo {
	public static void main(String[] args) {
		
		//Frame是一个带有标题和边框的顶层窗口
		Frame f = new Frame("FrameDemo");
		
		//事件监听
		//匿名内部类,注意与匿名对象区分
		f.addWindowListener(new WindowListener() {
			
			@Override
			public void windowOpened(WindowEvent e) {
			}
			
			@Override
			public void windowIconified(WindowEvent e) {
			}
			
			@Override
			public void windowDeiconified(WindowEvent e) {
			}
			
			@Override
			public void windowDeactivated(WindowEvent e) {
			}
			
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
			
			@Override
			public void windowClosed(WindowEvent e) {
			}
			
			@Override
			public void windowActivated(WindowEvent e) {
			}
		});
		
		//设置窗体标题
		//f.setTitle("...");
		
		//设置窗体位置
		//f.setLocation(400, 200);
		f.setLocation(new Point(400,200));
		
		//设置窗体大小
		//f.setSize(400,300);
		f.setSize(new Dimension(400,300));    //使用匿名对象,注意与匿名内部类区分
		
                //设置窗体位置及大小
		//f.setBounds(400, 200, 400, 300);
		//f.setBounds(new Rectangle(400, 200, 400, 300));

		//显示窗体(show过时已被setVisible替代)
		f.setVisible(true);
		
	}
}

<三> 适配器设计模式(窗体关闭案例)

为什么出现适配器设计模式?

接口(100个方法)  ->  实现类(只想使用该接口中的一种功能,必须实现所有100个方法,尽管是空实现)

接口(100个方法)  ->  适配器(这里空实现所有接口)  ->  实现类(entends继承适配器,重写需要方法即可)

适配器是一个接口的空实现类,相当于中间件,减少代码量:

package kyleeo.util_01;

import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Point;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

public class FrameDemo {
	public static void main(String[] args) {
		
		//Frame是一个带有标题和边框的顶层窗口
		Frame f = new Frame("FrameDemo");
		
		//事件监听
		//匿名内部类,注意与匿名对象区分
//		f.addWindowListener(new WindowListener() {
//			
//			@Override
//			public void windowOpened(WindowEvent e) {
//			}
//			
//			@Override
//			public void windowIconified(WindowEvent e) {
//			}
//			
//			@Override
//			public void windowDeiconified(WindowEvent e) {
//			}
//			
//			@Override
//			public void windowDeactivated(WindowEvent e) {
//			}
//			
//			@Override
//			public void windowClosing(WindowEvent e) {
//				System.exit(0);
//			}
//			
//			@Override
//			public void windowClosed(WindowEvent e) {
//			}
//			
//			@Override
//			public void windowActivated(WindowEvent e) {
//			}
//		});
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		//设置窗体标题
		//f.setTitle("...");
		
		//设置窗体位置
		//f.setLocation(400, 200);
		f.setLocation(new Point(400,200));
		
		//设置窗体大小
		//f.setSize(400,300);
		f.setSize(new Dimension(400,300));    //使用匿名对象,注意与匿名内部类区分
		
                //设置窗体位置及大小
		//f.setBounds(400, 200, 400, 300);
		//f.setBounds(new Rectangle(400, 200, 400, 300));

		//显示窗体(show过时已被setVisible替代)
		f.setVisible(true);
		
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值