java界面事件_Java界面编程—事件监听机制

组件首先要先注册事件处理器,当用户单击组件、移动鼠标或者敲击键盘时都会产生事件(Event),一旦有时间发生,应用程序就会做出对该事件的响应,这些组件就是事件源(Event source)。

接受、解析和处理事件,实现和用户交互的方法称为事件处理器(Event handler)。

事件源(即组件)可以产生多种不同类型的事件,也可以注册多种不同类型的事件监听器,当事件源(组件)上发生某种事件,生成相应的事件对象,该对象中封装了有关该事件的各种信息。该对象被传递到相应的注册的事件处理器,此时事件的处理方法才执行。

事件源:就是 awt 包或 swing 包中的那些图形界面的组件(如按钮、文本框、单选框等)

事件:每个事件源都有自己特定的对应事件和共性事件

监听器:可以发出某一个事件的动作都已经封装到监听器中

事件处理:触发事件后的处理方式

事件监听处理的四种方法

-- 自身类实现 ActionListener 接口,作为事件监听器。但如果容器中有多个监听处理部分时,需要一个一个去判断事件源,因此会影响程序性能。不建议使用。

-- 通过匿名类处理。如果容器的监听事件比较少是,该方式很合适;但当监听事件较多时,会造成代码可读性差。

-- 通过内部类处理。该方式符合面向对象编程(可以设置内部类只允许自身类适用,而且方便自身类的资源),尤其适合需要处理多个监听事件的情形,可读性也很好。

-- 通过外部类处理。当多个监听事件相同时,可以选用此种方式。

自身类实现 ActionListener 接口,作为事件监听器

packagelistener;importjava.awt.Color;importjava.awt.Container;importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JFrame;public class EventListener1 extends JFrame implements ActionListener { //自身类实现 ActionListener 接口,作为事件监听器

private static final long serialVersionUID = 1L;privateJButton btBlue;privateJButton btDialog;public EventListener1() { //构造器

setTitle("Java GUI 时间监听处理"); //设置标题栏内容

setBounds(100, 100, 500, 350); //设置初始化窗口位置

setLayout(new FlowLayout()); //设置布局管理器

btBlue = new JButton("蓝色"); //创建一个按钮

btBlue.addActionListener(this); //将按钮添加事件监听器

btDialog = new JButton("弹窗"); //创建一个按钮

btDialog.addActionListener(this); //将按钮添加事件监听器

add(btBlue); //将按钮添加到 JFrame 容器上

add(btDialog); //将按钮添加到 JFrame 容器上

setVisible(true); //设置窗口可视化

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭

}

@Overridepublic void actionPerformed(ActionEvent ae) { //事件处理

if (ae.getSource() == btBlue) { //判断最初发生 Event 事件的对象

Container container = getContentPane(); //获取容器

container.setBackground(Color.blue); //设置容器背景颜色

} else if (ae.getSource() == btDialog) { //判断最初发生 Event 事件的对象

JDialog dialog = new JDialog(); //创建 JDialog 窗口对象

dialog.setBounds(300, 200, 400, 300);

dialog.setVisible(true);

}

}public static voidmain(String[] args) {new EventListener1(); //创建 EventListener1 对象

}

}

通过匿名类处理事件监听

packagelistener;importjava.awt.Color;importjava.awt.Container;importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JFrame;public class EventListener2 extendsJFrame {private static final long serialVersionUID = 1L;privateJButton btBlue;privateJButton btDialog;public EventListener2() { //构造器

setTitle("Java GUI 事件监听处理"); //设置标题栏内容

setBounds(100,100,500,350); //设置初始化窗口位置

setLayout(new FlowLayout()); //设置窗口布局

btBlue = new JButton("蓝色"); //创建一个按钮

btBlue.addActionListener(new ActionListener() { //添加事件监听器,此处是匿名内部类

@Overridepublic void actionPerformed(ActionEvent e) { //事件处理

Container container = getContentPane(); //获得容器

container.setBackground(Color.blue); //设置容器背景色

}

});

btDialog= new JButton("弹框"); //创建一个按钮

btDialog.addActionListener(new ActionListener() { //添加事件监听器,此处是匿名内部类

@Overridepublic void actionPerformed(ActionEvent e) { //事件处理

JDialog dialog = new JDialog(); //创建一个 JDialog 窗口对象

dialog.setBounds(300,200,400,300);

dialog.setVisible(true);

}

});

add(btBlue);//将按钮添加到 JFrame 容器中

add(btDialog); //将按钮添加到 JFrame 容器中

setVisible(true); //设置窗口可视化

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭

}public static voidmain(String[] args) {new EventListener2(); //创建 EventListener2 对象

}

}

通过内部类处理事件监听

packagelistener;importjava.awt.Color;importjava.awt.Container;importjava.awt.FlowLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JDialog;importjavax.swing.JFrame;public class EventListener3 extendsJFrame {private static final long serialVersionUID = 1L;privateJButton btBlue;privateJButton btDialog;public EventListener3() { //构造方法

setTitle("Java GUI 事件监听处理"); //设置标题栏内容

setBounds(100,100,500,350); //设置初始化窗口位置

setLayout(new FlowLayout()); //设置容器布局

btBlue = new JButton("蓝色"); //创建一个按钮

btBlue.addActionListener(new ColorEventListener()); //按钮添加事件监听器

btDialog = new JButton("弹窗"); //创建一个按钮

btDialog.addActionListener(new DialogEventListener()); //按钮添加事件监听器

add(btBlue); //将按钮添加到容器中

add(btDialog); //将按钮添加到容器中

setVisible(true); //设置容器可视化

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭

}class ColorEventListener implements ActionListener{ //使用内部类

@Overridepublic void actionPerformed(ActionEvent e) { //事件执行

Container container =getContentPane();

container.setBackground(Color.blue);

}

}class DialogEventListener implements ActionListener { //使用内部类

@Overridepublic void actionPerformed(ActionEvent e) { //事件执行

JDialog dialog = newJDialog();

dialog.setBounds(300, 200, 400, 300);

dialog.setVisible(true);

}

}public static voidmain(String[] args) {new EventListener3(); //创建 EventListener3 实例对象

}

}

通过外部类处理事件监听

packagelistener;importjava.awt.FlowLayout;importjavax.swing.JButton;importjavax.swing.JFrame;public class EventListener4 extendsJFrame {private static final long serialVersionUID = 1L;privateJButton btBlue;privateJButton btDialog;publicEventListener4() {

setTitle("Java GUI 事件监听处理");

setBounds(100, 100, 500, 350);

setLayout(newFlowLayout());

btBlue= new JButton("蓝色");

btBlue.addActionListener(new ColorEventListener(this));

btDialog= new JButton("弹窗");

btDialog.addActionListener(newDialogEventListener());

add(btBlue);

add(btDialog);

setVisible(true);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}public static voidmain(String[] args) {newEventListener4();

}

}//外部类

packagelistener;importjava.awt.Color;importjava.awt.Container;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;public class ColorEventListener implementsActionListener {privateEventListener4 el;publicColorEventListener(EventListener4 el) {this.el =el;

}

@Overridepublic voidactionPerformed(ActionEvent arg0) {

Container container=el.getContentPane();

container.setBackground(Color.blue);

}

}

//外部类packagelistener;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JDialog;public class DialogEventListener implementsActionListener {

@Overridepublic voidactionPerformed(ActionEvent arg0) {

JDialog dialog= newJDialog();

dialog.setBounds(300, 200, 400, 300);

dialog.setVisible(true);

}

}

效果

9309d025f71f119312e33a3610c9b5fd.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值