[2014-10-29]JAVA笔记_GUI(Graphical User Interface)AWT、Swing

一、Java GUI

        分为两种:1. AWT(Abstract Window Toolkit), 抽象窗口工具集,第一代的 Java GUI 组件,是重量级的。

                            2. Swing,不依赖于底层细节,轻量级的组件。


package com.bob.awt;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;

public class MyFrame extends Frame {
	
	public MyFrame(String title){
		super(title);
	}

	public static void main(String[] args) {
		MyFrame frame = new MyFrame("My first frame");
		
		frame.setSize(400, 400);
		frame.setBackground(Color.BLACK);
		
		Panel panel = new Panel();		//添加面板
		panel.setSize(200, 200);
		panel.setBackground(Color.BLUE);
		
		frame.setLayout(null);		//不使用布局管理器
		
		frame.add(panel);	//将面板添加到框架内
		
		
		frame.setVisible(true);
		
	}

}

package com.bob.awt;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;

public class MyFlow {

	private Frame frame;
	private Button button1, button2, button3;
	
	public void go(){
		frame = new Frame("My first flow");
		
		//使用FlowLayout替换掉默认的BorderLayout布局管理器
		frame.setLayout(new FlowLayout());
		
		button1 = new Button("hello");
		button2 = new Button("world");
		button3 = new Button("welcome");
		
		frame.add(button1);
		frame.add(button2);
		frame.add(button3);
		
		frame.setSize(100, 100);
		frame.setVisible(true);
		
	}
	
	public static void main(String[] args) {

		MyFlow gui = new MyFlow();
		
		gui.go();
		
	}

}
BorderLayout: 默认添加到中间,如果有多个则会覆盖上一个。

FlowLayout:流式的管理器。默认从左到右排列,空间太小则自动到下一行。

Grid: 表格式的布局管理器。可以设置表格行列。


总结:

         · Frame: 是一个顶级窗口,缺省布局管理器为 Borderlayout。

           Panel: 无法单独显示,必须添加到某个容器中。缺省布局管理器为FlowLayout。


二、 AWT 事件模型

   什么是事件:

            事件 --- 描述发生了什么的对象

            事件源 --- 事件的产生器。

            事件处理器 --- 接受事件、解释事件并处理用户交互的方法


package com.bob.awt;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TestButton {

	public static void main(String[] args) {

		Frame frame = new Frame("Event");
		
		Button button = new Button("press me!");
		
		//此方法接受一个接口类型参数。使用时接口中的方法会自动得到调用
		button.addActionListener(new ButtonHandler());			//添加事件处理器
		
		frame.add(button,BorderLayout.CENTER);
		frame.pack();	//按钮自动适应窗口
		
		frame.setVisible(true);
	}

}

//自定义类实现ActionListener接口
class ButtonHandler implements ActionListener{

	@Override
	public void actionPerformed(ActionEvent e) {	//ActionEvent对象保存了事件源的信息
		
		String lable = e.getActionCommand();		//获得按钮标签
		
		System.out.println(lable);
	}
}

---在Button对象上用鼠标进行点击时,将发送一个 ActionEvent 事件。这个ActionEvent 事件会被使用 addActionListener 的 actionPermed() 方法接收。

总结:当单击一个按钮时就会产生一个事件(ActionEvent),然后检查是否与该按钮关联的事件处理器(实际上就是一个方法),如果没有,那么什么都不执行;如果有,就会将该事件传递给与该按钮关联的事件处理器,作为该方法的参数,之后该事件处理器方法就会自动得到调用,并且该方法可以使用传递过来的 ActionEvent 对象,进而获得事件发生时与该事件及事件源相关联的那些信息。


·Java 中的组件若想添加事件处理器,都会使用形如 addXxxListener 的方法添加。

 三、 事件 Adapters(适配器)

       作用: 你可以继承 Adapters 类,而且只需要重写你所需要的方法。

·为简化编程,JDK针对大多数事件监听器接口定义了相应的实现类,我们称之为事件适配器(Adapter)类。


四、Swing:第二代GUI工具,建立在AWT之上,使用新版本的组件替代了旧版本的组件。提供了许多新的组件和相关API。

        · Swing Components 分类: 顶层容器、中间容器、原子组件。

              顶层容器:JFrame,JDialog,JApplet。

              中间容器:













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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值