`
mmdev
  • 浏览: 12920093 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

java基础之GUI编程

 
阅读更多

GUI编程主要有两点:

一、图形界面的绘制。对Frame,Button,TextArea,Menu等控件的使用和对布局方式Layout的运用。

二、事件的处理。 对事件的处理首先要弄清楚java的事件监听机制。

事件监听机制的特点:

1、事件源 就是awt或Swing包中的那些图形界面。

2、事件 每一种事件源都有自己特有的事件和共性事件。keyEvent,WindowEvent,MouseEvent等,都是不同的事件。

3、监听器 将可以触发某一个事件的动作都已经封装到了监听器中。

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

4、事件处理 。

事件处理,就得要实现监听器中定义的方法。我们通常使用匿名内部类的形式实现我们对事件的自定义处理。为了我们不用重写所有的方法,

使用继承自适配器Adapter 的方法。

如WindowListener中定义了,窗口这个事件源可以有以下几种形为:

void windowActivated(WindowEvente)
将 Window 设置为活动 Window 时调用。
void windowClosed(WindowEvente)
因对窗口调用 dispose 而将其关闭时调用。
void windowClosing(WindowEvente)
用户试图从窗口的系统菜单中关闭窗口时调用。
void windowDeactivated(WindowEvente)
当 Window 不再是活动 Window 时调用。
void windowDeiconified(WindowEvente)
窗口从最小化状态变为正常状态时调用。
void windowIconified(WindowEvente)
窗口从正常状态变为最小化状态时调用。
void windowOpened(WindowEvente)
窗口首次变为可见时调用。

于是就出现了一个WindowAdapter ,提供了一个空实现,当我们要实现某个功能时,以内部类的形式重写这个方法就可以。

常见的WindowListener,KeyListener,MouseListener都有自己的适配器,因这这些事件源都有多个事件方法。

特例:活动监听ActionListener只有一个方法,所以用不着适配器。

一个组件可以添加哪些监听方法,只有组件最清楚。添加ActionListener监听,需要重写ActionListener中的performed方法。且ActionListener监听的优先级

比鼠标键盘等事件监听优先级高。示例代码:

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

public class MouseKeyEventDemo {

	private Frame frame;
	private Button btn;

	public MouseKeyEventDemo() {
		init();
	}

	public void init() {
		frame = new Frame("my frame");
		frame.setBounds(300, 200, 500, 400);
		frame.setLayout(new FlowLayout());
		btn = new Button("按钮");
		frame.add(btn);
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		btn.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("actionPerformed动作后于mouse动作!只要活动就能运行。用键盘都能执行!");
			}
		});
		btn.addMouseListener(new MouseAdapter() {
			private int count = 1;  

			public void mouseEntered(MouseEvent e) {
				System.out.println("鼠标第" + count + "次进入到按键上了!!");
				count++;
			}

			public void mouseClicked(MouseEvent e) {
				if(e.getClickCount()==2)
					System.out.println("双击动作!");
			}
		});
		btn.addKeyListener(new KeyAdapter(){
			public void keyPressed(KeyEvent k){
				 System.out.println(k.getKeyChar()+":"+k.getKeyCode()+k.getKeyText(k.getKeyCode()));
			}
		});
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		new MouseKeyEventDemo();

	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics