javaGUI的简单了解及适配器模式


java_GUI

Graphical User Interface(图形用户接口)。



1.如何创建一个窗口并显示
常说java代码一处编译到处运行,但javaGUI是一处编译到处调试

2.GUI布局管理器
* FlowLayout(流式布局管理器)
	* 从左到右的顺序排列。
	* Panel默认的布局管理器。
* BorderLayout(边界布局管理器)
	* 东,南,西,北,中
	* Frame默认的布局管理器。
* GridLayout(网格布局管理器)
	* 规则的矩阵
* CardLayout(卡片布局管理器)
	* 选项卡
* GridBagLayout(网格包布局管理器)
	* 非规则的矩阵

3.GUI窗体监听

4.GUI鼠标监听

5.GUI键盘监听和键盘事件

6.GUI动作监听


public class a {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Frame f = new Frame("我的第一个窗口");
		f.setSize(400, 600);	//设置窗体大小
		f.setLocation(500, 50);	//设置窗体位置
		f.setIconImage(Toolkit.getDefaultToolkit().createImage("javagui.jpg"));
		Button b1 = new Button("按钮一");
		Button b2 = new Button("按钮二");
		f.add(b1);
		f.add(b2);
		f.setLayout(new FlowLayout());//设置布局管理器
		//f.addWindowListener(new MyWindowListener );
		//f.addWindowListener(new MyWindowAdapter());
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		
		b1.addMouseListener(new MouseAdapter() {
			/*@Override
			public void mouseClicked(MouseEvent e) {//单击,不给力,推荐用释放
				System.exit(0);
			}*/
			@Override
			public void mouseReleased(MouseEvent e) {	//释放
				System.exit(0);
			}
		});
		
		b1.addKeyListener(new KeyAdapter() {
			@Override
			public void keyReleased(KeyEvent e) {
				//System.exit(0);
				//System.out.println(e.getKeyCode());
				//if(e.getKeyCode() == 32) {
				/*if(e.getKeyCode() == KeyEvent.VK_SPACE){
					System.exit(0);
				}*/
			}
		});
		
		b2.addActionListener(new ActionListener() {	
			//添加动作监听,应用场景就是暂停视频和播放视频

			@Override
			public void actionPerformed(ActionEvent e) {
				System.out.println(e);
				System.exit(0);//table + 默认空格
			}
		});
		
		f.setVisible(true);

	}

}



/*class MyWindowListener implements WindowListener {

@Override
public void windowOpened(WindowEvent e) {
}

@Override
public void windowClosing(WindowEvent e) {
	System.exit(0);
}

@Override
public void windowClosed(WindowEvent e) {
	System.out.println("Closed");
}

@Override
public void windowIconified(WindowEvent e) {
}

@Override
public void windowDeiconified(WindowEvent e) {
}

@Override
public void windowActivated(WindowEvent e) {
}

@Override
public void windowDeactivated(WindowEvent e) {
}

}
*/

/*class MyWindowAdapter extends WindowAdapter {
@Override
public void windowClosing(WindowEvent e) {
	System.exit(0);
}
}*/


GUI需要知道的
* 事件处理
	* 事件: 用户的一个操作
	* 事件源: 被操作的组件
	* 监听器: 一个自定义类的对象, 实现了监听器接口, 包含事件处理方法,把监听器添加在事件源上, 当事件发生的时候虚拟机就会自动调用监听器中的事件处理方法



适配器设计模式

* a.什么是适配器
	* 在使用监听器的时候, 需要定义一个类事件监听器接口.
	* 通常接口中有多个方法, 而程序中不一定所有的都用到, 但又必须重写, 这很繁琐.
	* 适配器简化了这些操作, 我们定义监听器时只要继承适配器, 然后重写需要的方法即可.
* b.适配器原理
	* 适配器就是一个类, 实现了监听器接口, 所有抽象方法都重写了, 但是方法全是空的.
	* 适配器类需要定义成抽象的,因为创建该类对象,调用空方法是没有意义的
	* 目的就是为了简化程序员的操作, 定义监听器时继承适配器, 只重写需要的方法就可以了.


public class b {

	/**
	 * @param args
	 * 适配器设计模式
	 * 鲁智深,他不爱做和尚本该做的事,只喜欢练武
	 * 定义一个和尚接口
	 * 定义一个抽象类适配器实现接口,为空方法
	 * 定义鲁智深要实现和尚接口中习武的这个方法,只需继承这个适配器,重写需要的方法
	 */
	public static void main(String[] args) {
		
	}

}

//接口
interface 和尚 {
	public void 打坐();
	public void 念经();
	public void 撞钟();
	public void 习武();
}
/**
 * 	适配器,就是一个类,实现了接口,所有抽象方法都重写了,但是方法全是空的.
 *	适配器类需要定义成抽象的,因为创建该类对象,调用空方法是没有意义的
 *	目的就是为了简化程序员的操作,定义监听器时继承适配器,只重写需要的方法就可以了
 *否则直接实现接口需要实现接口中的所有方法
 **/
abstract class 天罡星 implements 和尚 {		
	@Override
	public void 打坐() {
	}

	@Override
	public void 念经() {
	}

	@Override
	public void 撞钟() {
	}

	@Override
	public void 习武() {
	}
	
}


//要实现接口只需继承这个适配器类,重写我们需要的方法
class 鲁智深 extends 天罡星 {
	public void 习武() {
		System.out.println("倒拔垂杨柳");
		System.out.println("拳打镇关西");
		System.out.println("大闹野猪林");
		System.out.println("......");
	}
}





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值