java GUI之事件处理
常见事件及相应事件源类型
| 事件源 | 用户操作 | 事件 |
| JButton | 点击按钮 | ActionEvent |
| JTextField | 在文本域按回车键 | ActionEvent |
| JCheckBox | 点击复选框 | ActionEvent, ItemEvent |
| JRadioButton | 点击单选按钮 | ActionEvent, ItemEvent |
| JComBox | 选定选项 | ActionEvent, ItemEvent |
| JList | 选定选项 | ListSelectionEvent |
| JMenuItem | 选定菜单项 | ActionEvent, ItemEvent |
| JSlider | 滑动滑块 | ChangeEvent |
| Window | 窗口打开,关闭等 | WindowEvent |
| Component | 点击或移动鼠标 | MouseEvent |
| Component | 按下或释放键盘上的键 | KeyEvent |
| Container | 在容器中添加或删除组件 | ContainerEvent |
| Component | 组件获得或失去焦点 | FocusEvent |
| Component | 组件移动,改变大小 | ComponentEvent |
| JScrollBar |
移动滚动条 |
AdjustmentEvent |
java事件处理机制使用的是事件委托处理模型.事件监听器并不会自动接收某个组件触发的事件,要想监听器接收某个组件触发的某种事件,
就必须在该事件源中注册它(因此,程序可以有选择的忽略事件).所谓注册就是调用事件源提供的注册方法来声明某个对象是该事件源的监听器.
java语言中每种类型的事件定义了相应的监听器接口和注册方法.
一般来说,XXX事件的监听器接口是XXXListener,注册方法是addXXXListener.
部分常见的监听器接口
| 事件 | 监听器接口及注册方法 | 监听器方法 |
| ActionEvent |
ActionListener addActionListener |
actionPerformed(ActionEvent e) |
| AdjustmentEvent |
AdjustmentListener addAdjustmentListener() |
adjustValueChanged(AdjustmentEvent e) |
| ComponentEvent |
ComponentListener addComponentListener() |
componentResized(ComponentEvent e) componentMoved(ComponentEvent e) componentShown(ComponentEvent e) componentHidden(ComponentEvent e) |
| ContainerEvent |
ContainerEventListener addContainerEventListener() |
componentAdded(ContainerEvent e) componentRemoved(ContainerEvent e) |
| FocusEvent |
FocusListener addFocusListener() |
focusGained(FocusEvent e) focusLost(FocusEvent e) |
| ItemEvent |
ItemListener addItemListener() |
itemStateChanged(ItemEvent e) |
| KeyEvent |
KeyListener addKeyListener() |
keyTyped(KeyEvent e) keyPressed(KeyEvent e) keyReleased(KeyEvent e) |
| MouseEvent |
MouseListener addMouseListener() |
mouseClicked(MouseEvent e) mousePressed(MouseEvent e) mouseReleased(MouseEvent e) mouseEntered(MouseEvent e) mouseExited(MouseEvent e) |
| MouseEvent |
MouseMotionListener MouseMotionListener() |
mouseDragged(MouseEvent e) mouseMoved(MouseEvent e) |
| TextEvent |
TextListener addTextListener() |
textValueChanged(TextEvent e) |
| WindowEvent |
WindowListener addWindowListener() |
stateChanged(ChangeEvent e) |
| ListSelectionEvent |
ListSelectionListener addListSelectionListener() |
valueChanged(ListSelectionEvent e) |
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame; public class JButtonEvent extends JFrame implements ActionListener{
public JButtonEvent(){
JButton button=new JButton("按钮");
button.addActionListener(this); //注册
add(button);
}
public static void main(String[] args) {
JButtonEvent frame=new JButtonEvent();
frame.setTitle("演示动作事件处理");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,300);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) { //实现监听器接口中的方法
System.out.println(((JButton)e.getSource()).getText());
}
}
运行结果

这种编程方式有许多不足,如可读性,重用性不佳等.现在比较流行使用内部类,特别是匿名内部类来实现监听类接口.
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JButton;
import javax.swing.JFrame; public class JButtonEvent1 extends JFrame {
public JButtonEvent1(){
JButton button=new JButton("测试按钮");
button.addActionListener(new ActionListener() {//匿名内部类 @Override
public void actionPerformed(ActionEvent e) {
System.out.println(((JButton)e.getSource()).getText());
}
});
add(button);
}
public static void main(String[] args) {
JButtonEvent1 frame=new JButtonEvent1();
frame.setTitle("演示动作事件处理");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,300);
frame.setVisible(true);
}
}
java GUI之事件处理的更多相关文章
- JAVA GUI
JAVA GUI中的事件处理: 委托事件模型:事件源对象和监听器对象具有绑定关系 一个监听器可以绑定多个事件源 一个事件源也可以绑定多个监听器 监听器有各自监听的事件类型 设置容器的布局管 ...
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- Java GUI入门手册-AWT篇
Java GUI入门手册: AWT是基本的GUI设计工具,重点学习其中的布局格式以及事件监听事件. 首先创建一个窗口,我们先分析Frame类中的方法: 通过上图,可以看出frame是由构造方法的重载: ...
- Java GUI 桌面应用开发
前言 虽然现在已经很少项目会涉及GUI技术,但作为一个合格的Java开发工程师,还是得了解才得 本文记录,idea使用JFormDesigner插件进行Java GUI 桌面应用开发 GUI Swin ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- paip.java gui swt/jface 最佳实践
paip.java gui swt/jface 最佳实践 1. 工具:Eclipse +jigloo4 1 2. 安装插件: 1 1. IMPORT swt lib 2 2. 新建立窗体 2 3. 运 ...
- 写在学习Java GUI之前
Java GUI就是用Java语言开发桌面应用,而Java又有三个Java GUI库,分别为AWT,Swing和SWT/JFace. 现在要学的是Swing库. 后记:开发桌面应用,不止一种技术,现在 ...
- JAVA GUI 工具
Java GUI图形界面开发工具 上大学那会儿比较主流的Java图形开发插件是:Visual Editor 和 SWT Designer, 不久又出了个Jigloo, 但去官网看了下发现这个东西也 ...
- [置顶] java Gui 键盘监听事件
简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...
随机推荐
- OpenJudge就算概论-最长单词2【寻找句子内部最长的单词】
/*===================================== 最长单词2 总时间限制: 1000ms 内存限制: 65536kB 描述 一个以'.'结尾的简单英文句子,单词之间用空格 ...
- 转载:使用sklearn做单机特征工程
目录 1 特征工程是什么?2 数据预处理 2.1 无量纲化 2.1.1 标准化 2.1.2 区间缩放法 2.1.3 标准化与归一化的区别 2.2 对定量特征二值化 2.3 对定性特征哑编码 2.4 缺 ...
- excel 组及分级显示制作教程
1.思路:利用“组及分级显示”功能,将每一个项目作为“摘要行”,将需要被“收起”或“展开”的内容,也就是项目所包含的内容作为“明细数据行.2.制作方法: 方法1:使用手工“组合”例如下图中,A2代表的 ...
- linux下的chmod,chown和chgrp
对于linux的权限掌握以下几个命令就可以非常熟练的操作系统中的各种权限了. 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode f ...
- 【jmter】JDBC进行mysql数据库测试
1.添加线程组 2.添加需要的驱动jar包 使用不同的数据库,我们需要引入不同的jar包. 方式1:直接将jar包复制到jmeter的lib目录 mysql数据库:无需引入其他数据库驱动jar包. s ...
- 剑指offer系列62---两个链表的公共结点
[题目]输入两个链表,找出它们的第一个公共结点. * [思路]1 获取两链表的长度: * 2 让长的链表先走n步后此时走到短链表起始位置: * 3 两链表同时遍历,直至相同,这时返回第一个公共结点. ...
- php访问mysql工具类
本文转载自:http://www.cnblogs.com/lida/archive/2011/02/18/1958211.html <?php class mysql { private $db ...
- NotifyIcon用法
-------------------控件NotifyIcon-----------//客户端调用 private void btnShowError_Click(object sender, Eve ...
- 在Myeclipse中移除项目对Hibernate的支持
在Myeclipse中移除项目对Hibernate的支持 在使用Hibernate框架进行开发时可能会遇到配置错误或者需要删除Hibernate支持的情况.下面就说一下如何彻底移除项目的Hiberna ...
- M2的来源很简单
http://bbs.tianya.cn/post-develop-412703-1.shtml M2的来源很简单,一部分是外汇占款,这个是我们国家的缺陷,如果外汇不管制,其实是不会发生增长人民币的 ...