Java的事件处理机制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java的事件处理机制

概念部分:

1.事件:Event

是一种消息对象,封装了与事件发生相关的信息,

如操作键盘会引发KeyEvent事件,

单击关闭按钮会引发WindowEvent事件,

单击命令按钮或选择菜单项目会引发ActionEvent事件

等等

2.事件源:Event Source

产生事件的对象,

如命令按钮和单选按钮都是事件源,单击他们时,会引发ActionEvent事件

单选按钮会产生ItemEvent事件。

3.事件监听器:Event Listener

在事件发生时,事件源负责给予通知的一种对象。接收到事件通知的监听器主动的对事件进行处理。

两件事:将自己注册给事件源;事件的处理

4.事件处理器Event Handler

事件处理方法,用来接受事件并处理事件的方法。

Java事件处理的步骤:

1.类实现相应的事件监听器接口

2.重写接口中抽象方法

3.给事件源注册事件监听器

【例题】关闭窗口的实现

public class NotepadDemo{

private Frame mainForm;

private MenuBar mb;

private Menu m1;

private Menu m2;

private MenuItem mExit;

private MenuItem mi1;

private MenuItem mi2;

private ExitHandler eh;

public NotepadDemo(){

mainForm = new Frame();

mb = new MenuBar();

m1 = new Menu("文件(F)");

m2 = new Menu("编辑(E)");

mi1 = new MenuItem("新建 Ctrl + N");

mi2 = new MenuItem("打开 Ctrl + O");

mExit = new MenuItem("退出(X)");

mainForm.setMenuBar(mb);

mb.add(m1);

mb.add(m2);

m1.add(mi1);

m1.add(mi2);

m1.add(mExit);

mainForm.setBounds(0, 0, 400, 300);

eh = new ExitHandler();

//注册事件监听器

mExit.addActionListener(eh);

mi1.addActionListener(eh);

mi2.addActionListener(eh);

//注册Form的关闭监听器

mainForm.addWindowListener(eh);

}

public void NotepadShow(){

mainForm.setVisible(true);

}

public static void main(String[] args) { NotepadDemo nd = new NotepadDemo();

nd.NotepadShow();

}

//实现事件监听器接口

class ExitHandler implements ActionListener,WindowListener{

//重写其中的抽象方法

public void actionPerformed(ActionEvent e) {

if(e.getSource()==mExit){

System.exit(0);

}

else if(e.getSource()==mi1){

System.out.println("新建按钮被按下");

}

else if(e.getSource()==mi2){

System.out.println("打开按钮被按下");

}

}

public void windowActivated(WindowEvent arg0) {

//激活窗口 P190

}

public void windowClosed(WindowEvent arg0) {

//窗口关闭时

}

public void windowClosing(WindowEvent arg0) {

//退出窗口

System.exit(0);

}

public void windowDeactivated(WindowEvent arg0) { //窗口非激活时

}

public void windowDeiconified(WindowEvent arg0) { //窗口非图标化时

}

public void windowIconified(WindowEvent arg0) {

//窗口图标化时

}

public void windowOpened(WindowEvent arg0) {

//窗口打开时

}

}

}

【练习】两个窗体,每个窗体上各有一个按钮,当点击此按钮时显示另外一个窗体

public class FrameChangeDemo {

public int n = 1;

Frame1 f1;

Frame2 f2;

public FrameChangeDemo(){

f1 = new Frame1();

f2 = new Frame2();

}

public static void main(String[] args) {

FrameChangeDemo fcd = new FrameChangeDemo();

}

class Frame1 extends Frame{

Button btn;

public Frame1(){

this.setBounds(0,0,400,300);

btn = new Button("显示窗体2");

btn.setBackground(Color.red);

btn.addActionListener(new BtnHandle());

this.add(btn);

this.setTitle("窗体1");

this.setVisible(true);

}

}

class Frame2 extends Frame{

相关文档
最新文档