JavaSE17—GUI事件处理机制
1. GUI事件
GUI事件处理机制是指在GUI控件中,添加的各种操作。事件处理机制是指GUI窗体与用户的交互。
事件:
用户对控件的一个操作
事件源:
发生事件的控件就是事件源。
事件处理器:
负责事件处理的方法。
事件监听器首先与控件建立关联,当控件受到外界作用时,空间就会产生一个相应的时间对象,并把此对象传给与之关联的事件处理器,事件处理器就会被启动并执行相关的代码来处理该事件。
事件监听器用于监听指定的事件类型。必须实现改接口编写自己的监听器实现类来处理时间,监听器类接收到事件后,将将拜托指定的方法来执行时间处理。
事件监听器接口中可能会定义多个方法,在实现适配器接口时就应该实现接口中的所有方法。
例如在键盘监听器接口KeyListener中
import java.util.EventListener;
public interface KeyListener extends EventListener{
public void keyTyped(KeyEvent e);
public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);
}
2. 动作事件
在Java中动作事件由ActionEvent类表示,与动作时间对应的时间处理接口为ActionListener接口。
当控件发生动作时间后,ActionListener接口中的方法会被自动调用,该接口只有一个方法actionPerformed(),下面以按钮动作事件为例:
1) 定义事件监听类
public class ActionDemo implements ActionListener{
public void actionPerformered(ActionEvent e){
}
}
2) 向事件源注册监听器对象
控件可以通过addActionListener()方法注册时间监听器。
button.addActionListener(ad);
ad为动作时间监听器接口对象。
实例:在窗体中添加关闭按钮,并为该按钮绑定单击事件,实现用户单击按钮,窗体关闭。
窗体控制是指发生了窗口定义的WindowEvent窗口事件。窗口事件由WindowListener对象负责监听,可以使用addWindowListener()方法为窗口注册WindowListener对象,当特定窗口的状态(如最大化,最最小化,图标化)改变时,由控件生成此窗口事件,然后由WindowListener进行处理。
WindowListener接口提供了7个方法。
4. 鼠标操作
鼠标事件由MouseListener对象负责监听,可以使用addMouseListener()方法为控件注册MouseListener对象,只有为控件注册了MouseListener对象才可以接收到鼠标事件。
MouseListener接口提供了5个方法。
为控件添加鼠标事件的步骤:
1) 首先创建MouseListener对象
2) 调用addMouseListener()方法为控件注册MouseListener对象作为监听器。
3) 在控件上操作鼠标生成鼠标事件。
4) 执行MouseListener对象的方法,完成鼠标事件的处理。
实例:
在标签中添加鼠标事件,来跟踪鼠标的变化,使标签的现实内容与鼠标的变化相应。
键盘事件监听器由KeyListener()接口定义,编写键盘事件监听器必须实现该接口中的3个方法。
实现键盘事件处理步骤:
1) 首先创建KeyListenr对象
2) 调用addKeyListener()方法为控件注册KeyListener对象作为监听器。
3) 操作键盘生成键盘事件
4) 执行KeyListener对象的方法,完成键盘事件的处理。
实例:实现添加不规则按钮,并在该按钮中添加键盘事件,实现当用户按上下左右时,按钮的位置也随着变化。
1. GUI事件
GUI事件处理机制是指在GUI控件中,添加的各种操作。事件处理机制是指GUI窗体与用户的交互。
事件:
用户对控件的一个操作
事件源:
发生事件的控件就是事件源。
事件处理器:
负责事件处理的方法。
事件监听器首先与控件建立关联,当控件受到外界作用时,空间就会产生一个相应的时间对象,并把此对象传给与之关联的事件处理器,事件处理器就会被启动并执行相关的代码来处理该事件。
事件监听器用于监听指定的事件类型。必须实现改接口编写自己的监听器实现类来处理时间,监听器类接收到事件后,将将拜托指定的方法来执行时间处理。
事件监听器接口中可能会定义多个方法,在实现适配器接口时就应该实现接口中的所有方法。
例如在键盘监听器接口KeyListener中
import java.util.EventListener;
public interface KeyListener extends EventListener{
public void keyTyped(KeyEvent e);
public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);
}
2. 动作事件
在Java中动作事件由ActionEvent类表示,与动作时间对应的时间处理接口为ActionListener接口。
当控件发生动作时间后,ActionListener接口中的方法会被自动调用,该接口只有一个方法actionPerformed(),下面以按钮动作事件为例:
1) 定义事件监听类
public class ActionDemo implements ActionListener{
public void actionPerformered(ActionEvent e){
}
}
2) 向事件源注册监听器对象
控件可以通过addActionListener()方法注册时间监听器。
button.addActionListener(ad);
ad为动作时间监听器接口对象。
实例:在窗体中添加关闭按钮,并为该按钮绑定单击事件,实现用户单击按钮,窗体关闭。
import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ActionEventDemo extends JFrame { public ActionEventDemo(){ super(); getContentPane().setLayout(null); setBounds(100,100,238,124); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel jPanel = new JPanel(); jPanel.setLayout(null); jPanel.setBounds(0,0,232,90); getContentPane().add(jPanel); final JButton jb = new JButton(); jb.addActionListener(new ActionListener(){ @Override public void actionPerformed(final ActionEvent e){ // TODO Auto-generated method stub System.exit(0); } }); jb.setText("CLOSE ME"); jb.setBounds(73,27,86,28); jPanel.add(jb); this.setVisible(true); } public static void main(String[] args){ new ActionEventDemo(); } }3. 窗体控制
窗体控制是指发生了窗口定义的WindowEvent窗口事件。窗口事件由WindowListener对象负责监听,可以使用addWindowListener()方法为窗口注册WindowListener对象,当特定窗口的状态(如最大化,最最小化,图标化)改变时,由控件生成此窗口事件,然后由WindowListener进行处理。
WindowListener接口提供了7个方法。
4. 鼠标操作
鼠标事件由MouseListener对象负责监听,可以使用addMouseListener()方法为控件注册MouseListener对象,只有为控件注册了MouseListener对象才可以接收到鼠标事件。
MouseListener接口提供了5个方法。
为控件添加鼠标事件的步骤:
1) 首先创建MouseListener对象
2) 调用addMouseListener()方法为控件注册MouseListener对象作为监听器。
3) 在控件上操作鼠标生成鼠标事件。
4) 执行MouseListener对象的方法,完成鼠标事件的处理。
实例:
在标签中添加鼠标事件,来跟踪鼠标的变化,使标签的现实内容与鼠标的变化相应。
import java.awt.Color; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JLabel; public class UseMouseEventFrame extends JFrame{ public UseMouseEventFrame (){ this.setTitle("UseMouseEventFrameDemo"); getContentPane().setLayout(null); this.setBounds(100,100,325,204); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JLabel jl = new JLabel(); jl.addMouseListener(new MouseAdapter(){ public void mouseClicked(final MouseEvent arg0){ jl.setText("onClick!"); } public void mouseEntered(final MouseEvent arg0){ jl.setText("Entered!"); } public void mouseExited(final MouseEvent arg0){ jl.setText("Exited!"); } public void mousePressed(final MouseEvent arg0){ jl.setText("Pressed!"); } public void mouseReleased(final MouseEvent arg0){ jl.setText("Released"); } }); jl.setOpaque(true); jl.setBackground(Color.GRAY); jl.setText("onListener"); jl.setBounds(70,38,171,83); getContentPane().add(jl); this.setVisible(true); } public static void main(String[] args){ new UseMouseEventFrame(); } }5. 键盘控件事件
键盘事件监听器由KeyListener()接口定义,编写键盘事件监听器必须实现该接口中的3个方法。
实现键盘事件处理步骤:
1) 首先创建KeyListenr对象
2) 调用addKeyListener()方法为控件注册KeyListener对象作为监听器。
3) 操作键盘生成键盘事件
4) 执行KeyListener对象的方法,完成键盘事件的处理。
实例:实现添加不规则按钮,并在该按钮中添加键盘事件,实现当用户按上下左右时,按钮的位置也随着变化。
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.net.URL; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class KeyDemo extends JFrame{ public KeyDemo(){ super(); this.getContentPane().setLayout(null); this.setBounds(100,100,257,160); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel jp = new JPanel(); jp.setLayout(null); jp.setBounds(0,0,249,126); this.getContentPane().add(jp); final JButton jb = new JButton(); jb.addKeyListener(new KeyListener(){ @Override public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub String dir = KeyEvent.getKeyText(e.getKeyCode()); int x = jb.getX(); int y = jb.getY(); if(dir.equals("Right")){ x+=2; } if(dir.equals("Left")){ x-=2; } if(dir.equals("Down")){ y+=2; }if(dir.equals("Up")){ y-=2; } jb.setLocation(x,y); } @Override public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub } @Override public void keyTyped(KeyEvent arg0) { // TODO Auto-generated method stub } }); jb.setContentAreaFilled(false); jb.setBorder(null); URL url = getClass().getResource("pig.png"); ImageIcon icon = new ImageIcon(url); jb.setIcon(icon); jb.setBounds(45,48,40,39); jp.add(jb); this.setVisible(true); } public static void main(String[] args){ new KeyDemo(); } }
发表评论
-
JavaSE20—绘图
2011-05-18 20:10 1504JavaSE20—绘图 1. 绘制图形 Graphics类是 ... -
JavaSE19—Swing高级控件(下)
2011-05-15 17:28 1087JavaSE19—Swing高级控件(下) 1. 工具栏与对话 ... -
JavaSE18—Swing高级控件(上)
2011-05-12 22:22 1497JavaSE18—Swing高级控件(上) 1. 为窗体添加 ... -
JavaSE15—多线程
2011-05-03 19:10 828JavaSE15—多线程 1. 多线程简介 程序:程序是计算 ... -
JavaSE14—窗体程序开发(下)
2011-05-01 16:55 968JavaSE14—窗体程序开发(下) 1. 基础组件(续) ... -
JavaSE13—窗体程序开发(中)
2011-05-01 16:53 1131JavaSE13—窗体程序开发(中) 1、 布局方式 1) ... -
JavaSE12—窗体程序开发(上)
2011-04-29 16:59 1465JavaSE12—窗体程序开发 ... -
JavaSE11—网络编程初步
2011-04-29 16:58 937JavaSE11—网络编程初步 1. 背景知识 1) 端口 ... -
JavaSE 10 —IO流
2011-04-28 20:00 863JavaSE 10 —IO流 1.IO流简介 Java的输入 ... -
JavaSE09—Java类集框架
2011-04-26 19:32 834JavaSE09—Java类集框架 1. 类集接口 接口: ... -
JavaSE08—包,访问权限及异常处理
2011-04-26 19:31 630JavaSE08—包,访问权限 ... -
JavaSE07—Java常用类库
2011-04-26 19:30 627JavaSE07—Java常用类库 1. String类和S ... -
JavaSE06—类的其他问题
2011-04-26 19:28 664JavaSE06—类的其他问题 1. Objec ... -
JavaSE05—抽象类与接口
2011-04-26 19:27 620JavaSE05—抽象类与接口 1. ... -
JavaSE04—类的封装,继承与多态
2011-04-26 19:26 683JavaSE04—类的封装,继 ... -
JavaSE03—类和对象
2011-04-26 19:24 627JavaSE03—类和对象 1. ... -
Java SE02——数组
2011-04-26 19:23 628Java SE02——数组 1. 数组的声 ... -
Java SE01——原生数据类型
2011-04-26 19:18 831Java SE01——原生数据类型 1.Java中的数据类 ...
相关推荐
在JavaSE下编写一个模拟ATM机的GUI编程,可实现的功能有:存款,取款,转账,查询,修改密码。
该项目为JavaSe项目,用Java GUI来做的(JFrame,JPane等) 因为该项目没有用到框架,没有jar包,用了原生的jdbc,所以项目较小。 想改少点积分下载,但编辑时积分不能更改。但是也没什么,自认为该项目做的很好,...
JavaSE_8_GUI编程JavaSE_8_GUI编程JavaSE_8_GUI编程JavaSE_8_GUI编程
看B站视频项目总结的系列文档,仅供个人学习使用
下面小编就为大家带来一篇浅谈javaSE GUI (Action事件)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
-JavaSE-GUI-Mysql- 写于2018年6月最后一节Java课上
此笔记是通过观看毕向东老师的视频之后总结的有关GUI部分的笔记,不详之处请见谅!
该软件主要是利用 JavaSE 的 I/O 流进行文件读写设计开发一个小型的银行模拟系统,菜单面板具有七大功能:开户、存款、取款、挂失、查询、改密、转账,其实还有一些工具类功能:实时日期显示,操作界面要符合用户的...
基于JavaSE的局域网通信工具_GUI窗体_桌面应用.rar
基于javase上写的银行管理系统 没有GUI界面 控制台输出
JavaSE程序设计课件:L03-GUI Programming - 1.pdf
基于JavaSE的迷你网站爬虫具_GUI窗体_桌面应用.rar
JAVA概述,JAVA语言基础,面向对象编程,深入面向对象编程,抽象类与接口,异常,API介绍,Java中的集合类,GUI编程,IO,多线程,网络编程,数据库编程,JDK5新特性
JavaSE程序设计课件:L04-GUI & Applets - 2.pdf
javaSE笔记、经典、全面 基本操作 Java基础 面向对象 多线程 String类 集合 IO GUI socket网络编程 正则表达式
JavaSE系列,JavaGUI编程,通过GUI的窗体组件,事件监听以及定时器的综合实战篇——贪吃蛇游戏配套源码
javase基础知识点总结包含xmind文件,还包含了图片格式,svg格式以及网页格式的文件,不包含GUI编程