- 浏览: 189146 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (75)
- JSP/Servlet (4)
- Spring (5)
- Hibernate (1)
- Struts (5)
- EJB (3)
- Swing (1)
- Core Java (29)
- Algorithm (2)
- HTML/CSS/JavaScript (0)
- JQuery/AJAX (1)
- Oracle (0)
- Design Pattern (2)
- MVC (0)
- Web服务器 (3)
- 杂项 (0)
- NetCDF On Java (0)
- Java Extension (2)
- iBATIS (4)
- English Articles (1)
- JavaEE (3)
- Java8 (3)
- Android (3)
- Maven (1)
- Hadoop (1)
- Docker (0)
- Java高并发 (0)
最新评论
-
Bll:
为什么要推荐jsp动作标签访问呢?
JavaBean入门 - 概念和简单例子 -
落雪封:
我检查过了,没有注释,只是大文本,也一直报这个错,求原因
Abator生成错误:XML document structures must start and end within the same entity
GUI程序发展到现在,事件一直是其核心。
从以前的Win32程序,处理事件需要编写代码来检查事件队列,代码由switch来控制,这种方式编写的程序可读性很差。
后来的Visual Basic,.NET,将事件对程序员隐藏起来。
那么,我们Java中是如何处理事件的呢?
Java对事件控制作了综合,实现了从事件源到事件监听器的传递。
事件源注册事件监听器对象,如下:
eventSourceObject.addEventListener(eventListenerObject);
eg:
ActionListener listener = ...;
JButton button = new JButton("Ok");
button.addActionListener(listener);
下面我们来举个例子,我们做个Frame,在上面放个面板(Panel),在Panel上再放个
button,点击button,弹出对话框。
这是一个非常简单的例子。
方法一: 我们可以把事件监听器做成是Panel的私有内部类
方法二:我们也可以把事件监听器做成是匿名类
我们再把这个案例扩充一下,我们可以给事件监听器传入参数,案例如下:
从以前的Win32程序,处理事件需要编写代码来检查事件队列,代码由switch来控制,这种方式编写的程序可读性很差。
后来的Visual Basic,.NET,将事件对程序员隐藏起来。
那么,我们Java中是如何处理事件的呢?
Java对事件控制作了综合,实现了从事件源到事件监听器的传递。
事件源注册事件监听器对象,如下:
eventSourceObject.addEventListener(eventListenerObject);
eg:
ActionListener listener = ...;
JButton button = new JButton("Ok");
button.addActionListener(listener);
下面我们来举个例子,我们做个Frame,在上面放个面板(Panel),在Panel上再放个
button,点击button,弹出对话框。
这是一个非常简单的例子。
方法一: 我们可以把事件监听器做成是Panel的私有内部类
package corejava2.event; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SimpleButton1 { public static void main(String[] args) { SimpleFrame1 frame = new SimpleFrame1(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } /** * A frame with a button panel */ class SimpleFrame1 extends JFrame { public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; public SimpleFrame1() { setTitle("Simple Button Test"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); //add panel to frame SimplePanel1 panel = new SimplePanel1(); add(panel); } } /** * A panel with one simple */ class SimplePanel1 extends JPanel { public SimplePanel1() { JButton simpleButton = new JButton("Simple Button"); add(simpleButton); ButtonAction buttonAction = new ButtonAction(); simpleButton.addActionListener(buttonAction); } /** * An action listener which is an inner class */ private class ButtonAction implements ActionListener { public void actionPerformed(ActionEvent event) { JOptionPane.showMessageDialog(null, "You clicked the button!"); } } }
方法二:我们也可以把事件监听器做成是匿名类
package corejava2.event; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SimpleButton2 { public static void main(String[] args) { SimpleFrame2 frame = new SimpleFrame2(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } /** * A frame with a button panel */ class SimpleFrame2 extends JFrame { public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; public SimpleFrame2() { setTitle("Simple Button Test"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); //add panel to frame SimplePanel2 panel = new SimplePanel2(); add(panel); } } /** * A panel with one simple */ class SimplePanel2 extends JPanel { public SimplePanel2() { JButton simpleButton = new JButton("Simple Button"); add(simpleButton); simpleButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JOptionPane.showMessageDialog(null, "You clicked the button!"); } }); } }
我们再把这个案例扩充一下,我们可以给事件监听器传入参数,案例如下:
package corejava2.event; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ButtonTest { public static void main(String[] args) { ButtonFrame frame = new ButtonFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } /** * A frame with a button panel */ class ButtonFrame extends JFrame { public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; public ButtonFrame() { setTitle("ButtonTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // add panel to frame ButtonPanel panel = new ButtonPanel(); add(panel); } } /** * A panel with three buttons. */ class ButtonPanel extends JPanel { public ButtonPanel() { // create buttons JButton yellowButton = new JButton("Yellow"); JButton blueButton = new JButton("Blue"); JButton redButton = new JButton("Red"); // add buttons to panel add(yellowButton); add(blueButton); add(redButton); // create button actions ColorAction yellowAction = new ColorAction(Color.YELLOW); ColorAction blueAction = new ColorAction(Color.BLUE); ColorAction redAction = new ColorAction(Color.RED); // associate actions with buttons yellowButton.addActionListener(yellowAction); blueButton.addActionListener(blueAction); redButton.addActionListener(redAction); } /** * An action listener that sets the panel's background color. */ private class ColorAction implements ActionListener { private Color backgroundColor; public ColorAction(Color c) { backgroundColor = c; } public void actionPerformed(ActionEvent event) { String mColor = ""; setBackground(backgroundColor); if (backgroundColor == Color.YELLOW) mColor = "Yellow"; else if (backgroundColor == Color.BLUE) mColor = "Blue"; else if (backgroundColor == Color.RED) mColor = "Red"; JOptionPane.showMessageDialog(null, "You choosed " + mColor + " button"); } } }
发表评论
-
Java高并发和多线程系列 - 1. 线程基本概念
2018-04-16 09:45 3281. 什么是线程? 线程和进程的区别 在了解线程的概念前,我 ... -
Java多线程编程-同步和锁
2017-10-04 13:29 01. 竞态条件(Race Condition) 两个或以上线 ... -
Core Java - 流(Stream) - 字节流和字符流(一)
2016-12-02 17:27 4510. 概述: Java中基于流的 ... -
Java开发 - 异常 - 使用throws
2016-04-21 11:35 517如果一个方法可能会产生异常,我们需要用throws关键字给它标 ... -
Java开发 - 异常 - 抛出异常
2016-04-21 11:24 570问题: 如何抛出一个系统异常并且捕获它 代码如下: pu ... -
Java8通过管道流(stream)来实现集合的一些聚合函数
2015-10-22 10:24 1770stream的一些聚合函数包括: count(), findF ... -
数组自定义排序
2015-10-21 14:17 1432CustomComparator.java package ... -
数组排序
2015-10-21 09:58 663SortArray.java package coreja ... -
HashMap使用范例
2015-10-20 14:25 764HashMapDemo.java package core ... -
Java8新特性 - Lambda表达式 - Functional Interfaces
2015-10-20 09:52 748Mapper.java package corejava8 ... -
使用Hashtable和线程技术制作自己简单的内存缓存
2013-07-19 11:06 11121. 首先,我们要做一个缓存数据类 这个数据类要有一个数据 ... -
Java OutOfMemory 解决
2013-07-19 10:18 798Eclipse中设置 -
String.format方法使用
2013-06-18 15:21 1882一.常规类型、字符类型和数值类型的格式说明符的语法如下:%[a ... -
JDK1.6连接SQL Server2008失败的原因
2011-07-29 15:05 10461. 需要下载最新sql server jdbc,从微软网站下 ... -
jar命令打包java带有包名的类文件
2011-07-13 09:40 1272jar cvfm JTool.jar jtool\ui\man ... -
ikvm转换jar文件成dll
2011-06-19 22:35 1699ikvmc -out:BasicFileOutput.dll ... -
jar命令打包java类文件
2011-06-19 22:33 1333jar cvfm BasicFileOutput.jar ma ... -
Java命令行编译自动生成包目录
2011-06-19 18:01 1352javac -d . BufferedInputFile.ja ... -
用命令行编译和执行带有包的java文件
2011-06-19 15:24 2756主要介绍java和javac命令的使用, 分带package和 ... -
FilenameFilter过滤目录下文件
2011-06-19 10:01 953编写一个实现FilenameFilter接口的类 publ ...
相关推荐
NULL 博文链接:https://vakinge.iteye.com/blog/442886
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
此程序在j2se下编写,主要用于熟练: 1. java基本语法例如:表达式,语句,变量声明,基本数据类型及类型转换等;...java事件驱动模型及其使用方法。 5. 熟悉MyEclipse IDE环境的基本使用。jdk的安装及环境变量的设定。
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
04 面象对象编程初步-类和对象(共54页).ppt 05 面向对象编程-封装(共21页).ppt 06 面向对象编程-继承和多态(共28页).ppt 07 面向对象编程-接口和常量(共28页).ppt 08 面向对象编程进阶(共37页).ppt 09 ...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
Java编程实训 Java开发基础入门教程1-04 面象对象编程初步-类和对象(共54页).ppt Java编程实训 Java开发基础入门教程1-05 面向对象编程-封装(共21页).ppt Java编程实训 Java开发基础入门教程1-06 面向对象编程-...
JavaScript核心 JavaScript语言基础(数据类型、函数、对象、闭包)、Java DOM编程、事件模型、JavaScript面向对象编程。 深入理解JavaScript语言原理;熟练的使用JavaScript对HTML DOM进行编程;熟练掌握...
04 面象对象编程初步-类和对象(共54页).ppt 05 面向对象编程-封装(共21页).ppt 06 面向对象编程-继承和多态(共28页).ppt 07 面向对象编程-接口和常量(共28页).ppt 08 面向对象编程进阶(共37页).ppt 09 ...
04 面象对象编程初步-类和对象(共54页).ppt 05 面向对象编程-封装(共21页).ppt 06 面向对象编程-继承和多态(共28页).ppt 07 面向对象编程-接口和常量(共28页).ppt 08 面向对象编程进阶(共37页).ppt 09 ...
04 面象对象编程初步-类和对象(共54页).ppt 05 面向对象编程-封装(共21页).ppt 06 面向对象编程-继承和多态(共28页).ppt 07 面向对象编程-接口和常量(共28页).ppt 08 面向对象编程进阶(共37页).ppt 09 ...
主要包括JDK和Jcreator的安装与初步使用,Java语言基础知识的运用,程序流程控制,数组,面向对象的编程,接口与包,Java图形用户界面设计与事件处理,Java I/O系统,异常处理,多线程程序设计等20多个实验的程序...
6、Swing和事件处理.mmap 7、多线程.mmap 8、IO.mmap 9、Collection.mmap 10、搜索引擎的使用方法.mmap 11、NDK初步.mmap 二、android部分 1、Androidd用用基础原理概要.mmap 2、Activity.mmap 3、Android中的...
04 面象对象编程初步-类和对象(共54页).ppt 05 面向对象编程-封装(共21页).ppt 06 面向对象编程-继承和多态(共28页).ppt 07 面向对象编程-接口和常量(共28页).ppt 08 面向对象编程进阶(共37页).ppt 09 ...
04 面象对象编程初步-类和对象(共54页).ppt 05 面向对象编程-封装(共21页).ppt 06 面向对象编程-继承和多态(共28页).ppt 07 面向对象编程-接口和常量(共28页).ppt 08 面向对象编程进阶(共37页).ppt 09 ...