java 单击事件
ActionEvent单击事件是Java GUI中比较常见的事件之一,是高级事件。单击按钮、单选按钮和菜单项等都会触发相应的ActionEvent事件。
在下拉菜单中,单击某一个菜单项时,会执行相关操作。其实质上是使用菜单项的单击事件,即ActionEvent事件。当单击上面菜单项事件源时,会触发Actio nEvent事件,即ActionEvent类创建一个实例化对象。
通过ActionEvent类的getActionCommand()方法,可以获取触发事件的事件源名称。一个类如果要成为ActionEvent事件的监听器,必须要继承ActionListener接口。ActionListener接口具有一个名称为actionPerformed(ActionEvent e)的方法。
下面创建一个案例,来说明单击事件的使用。代码如下所示。
实验项目3 第2部分 组件与事件处理(2) [实验目的] 1、进一步掌握java组件及事件编程的各种方法。 2、掌握对话框的编制和事件处理方法。 3、掌握鼠标焦点事件、鼠标事件及键盘事件的处理方法。 4、掌握Swing组件及事件编程方法。 [实验要求] 1、复习理论教学中所学的内容。 2、认真进行实验预习,查阅参考书,书写源程序,书写实验预习报告。 3、认真总结实验并书写实验报告。 [实验课时] 2学时 [实验教学方式] 学生上机实验,教师随堂指导。 [实验内容] 1、字体对话框:请读懂下面模板代码,将其补充完整并调试运行。 //FontFamilyNames.java import java.awt.GraphicsEnvironment; public class FontFamilyNames { String fontName[]; public String [] getFontName() { GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); fontName=ge.getAvailableFontFamilyNames(); return fontName; } } //FontDialog.java import java.awt.event.*; import java.awt.*; import javax.swing.JLabel; public class FontDialog extends Dialog implements ItemListener,ActionListener { FontFamilyNames fontFamilyNames; int fontSize=38; String fontName; Choice fontNameList; JLabel label;
实验五Java事件处理 实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序(ArtFo nt.java) 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。当分别选择粗体和斜体 复选框时,文本域中的文字分别显示粗体和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的 前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字 体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字 体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。 图1程序界面运行效果 package Sy; import java.awt.*; import java.awt.event.*;
import javax.swing.*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;// 字体样式下拉框 JComboBox fontSize;// 字体大小下拉框 JComboBox windowStyle;// 窗体样式下拉框 JCheckBox boldBx;// 粗体按钮 JCheckBox italicBx;// 斜体按钮 JButton colorBtn;// 颜色按钮 String[] fontNames;// 字体名称 String[] fontSizes;// 字体大小 JLabel label;// 输入提示标签 JTextField inputText;// 文字输入框 JTextArea txtArea;// 文字显示区 JPanel northPanel;// 字体设置 JPanel centerPanel;// 显示效果区 JPanel southPanel;/样式设置 Font font; int boldStyle, italicStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle = Color.black;// 设置字体的默认颜色为黑色 String[] style = { "默认显示效果 ", "Windows 显示效果 ", "Unix 显示效果 " }; public ArtFont() { super(”字体设置"); // 设置默认字体 boldStyle = 0; italicStyle = 0; fontSizeStyle = 10; fontNameStyle = "宋体 ";
J a v a S w i n g中处理各组件事件的一般步骤 集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]
Java Swing中处理各组件事件的一般步骤是: 1.新建一个组件(如JButton)。 2.将该组件添加到相应的面板(如JPanel)。 3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。 4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。 以上步骤我们可以用多种方法实现。但人们通常用二种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。 为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。 首先,我们利用单个监听器来实现该程序。我们定义一个名为Simple1的类来包括所有代码。所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。以下是代码: import .*; import .*; public class Simple1 {
private static JFrame frame;dd(myPanel); (); (true); } } 让我们来看看以上代码是如何工作的。在main方法中,我们定义了一个JFrame,然后将面板Jpanel添加到窗体中,该面板包括两个按钮。相应的变量Frame,button1,button2定义在程序的开头部分。 在程序入口main方法中,首先新建Simple1组件,通过构造器建立用户GUI,定义一个面板Jpanle,,增加两个按钮,然后利用将两个按钮加入到一个活动监听器SimpleLister中,最后,两个按钮添加到面板。当GUI 建立后,我们将面板添加到窗体并显示结果。当用户点击按钮时,程序调用actionPerformed方法,通过if语句来判断是哪一个按钮被点击,然后在对话框中显示相应的内容。 利用一个监听器来处理事件的缺点是,当程序比较复杂时,需要一大串的if 语句来实现,程序代码较难阅读与维护。当然,如果处理的事件较少,这种方式比较简单。 通过使用匿名内部类可以解决上述存在的问题。使用简单的匿名内部类作为addActionListener的变量即可。以下是实现代码:
Java Swing中处理各组件事件的一般步骤是: 1.新建一个组件(如JButton)。 2.将该组件添加到相应的面板(如JPanel)。 3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。以上步骤我们可以用多种方法实现。但人们通常用二种方法。第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。 为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。 首先,我们利用单个监听器来实现该程序。我们定义一个名为Simple1的类来包括所有代码。所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。以下是代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Simple1 { private static JFrame frame; // 定义为静态变量以便main使用 private static JPanel myPanel; // 该面板用来放置按钮组件 private JButton button1; // 这里定义按钮组件 private JButton button2; // 以便让ActionListener使用 public Simple1() // 构造器, 建立图形界面 { // 新建面板 myPanel = new JPanel(); // 新建按钮 button1 = new JButton("按钮1"); // 新建按钮1 button2 = new JButton("按钮2"); SimpleListener ourListener = new SimpleListener(); // 建立一个actionlistener让两个按钮共享 button1.addActionListener(ourListener); button2.addActionListener(ourListener); myPanel.add(button1); // 添加按钮到面板 myPanel.add(button2); }
代码如下,注意注释: import java.awt.Container; import java.awt.event.*; import javax.swing.*; public class ShortTest2 extends JFrame implements ActionListener { JButton jb1; JPanel j1; public ShortTest2() { Container contentPane = this.getContentPane(); j1 = new JPanel(); jb1 = new JButton("Draw"); jb1.addActionListener(this); j1.add(jb1); contentPane.add(j1, "North"); } public static void main(String[] args) { ShortTest2 m = new ShortTest2(); m.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); m.setSize(600, 370); m.setLocationRelativeTo(null); m.setVisible(true); } public void actionPerformed(ActionEvent ae) { //主要是这里,按钮一按就执行下面的代码 JOptionPane.showMessageDialog(null, "Hello World!"); } } java点击按钮,出现另一个窗口 第一个窗体LoginFrame.java:
实验14 Swing组件及事件处理(一) 【实验环境】 Windows XP,JDK1.6与Eclipse 【实验目的】 1.了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法, 2.了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。【实验要求】 1. 掌握在Applet 容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方 法。 2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 了解Java Swing 组件的使用方法。 5. 了解对话框的使用方法。 【实验内容】 一.创建图形用户界面 图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。通过容器的add 方法把组件加入到容器中。 1.在Applet 中添加标签、按钮并使用网格布局 (1)程序功能:在Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。 (2)编写LX8_1.java 程序文件,源代码如下。
(3)编译程序LX8_1.java。 (4)编写显示Applet 的页面文件LX8_1.html,在浏览器显示结果如图8.1 所示。 图8.1 2.在面板中添加组件 (1)程序功能:在Applet 中添加面板容器,并分别在Applet、面板容器中添加组件并使用不同的布局管理方式。 (2)编写LX8_2.java 程序文件,源代码如下。
Java講座(七) Java and Event Handling 圖文?李盈嫻( Luna Lee ) 一、前言 在上一個章節,我們做出了美美的圖形使用者介面,可是,我們做的圖形介面要怎樣才能跟使用者產生互動呢?例如當使用者按下按鈕或移動滑鼠時,程式要做出什麼相對應的動作,畫面會產生什麼變化等等。在此,我們就要藉由『Event Handling』的觀念來完成。本章將會介紹Event的基本觀念,Listener的實作方法,最後並應用到聊天室的範例上。 二、內容 什麼是Event 當我們在寫程式時,多半會需要與使用者互動或回應其指令。在古早古早的以前,若有一支程式想要回應使用者按下滑鼠的動作,可能得要辛苦的寫一大堆code自己去抓相關的資訊。例如,在這支程式被initial 了之後,就要有一支迴圈不斷地去檢查使用者的滑鼠到底被按下去了沒有。這種polling programming的方法,一來浪費系統資源,二來所有要處理的回應與動作都在一個大迴圈中而顯得複雜了許多。 而Java的AWT則採用event-driven programming的方法來達成此目的,當某個特定的事件發生,就會驅動程式去執行某些特定的動作,而可與使用者產生即時的互動。其中有三個要素: ?Event – 意指某個特定的事件、動作,也就是「發生了什麼事件」。例如:視窗關閉、滑鼠移動。 ?Event Source – 產生、觸發事件的元件。例如:Button、TextField。?Event Handler – 負責接收Event object並作處理的Method。 在Java中把Events以物件來表示,並依type分類為不同的classes。有些負責表示較高階的事件(元件本身狀態或內容的改變),如ActionEvent、TextEvent;有些則表示較低階的事件(元件與環境間的溝通,像鍵盤或滑鼠相關的動作),例如KeyEvent、MouseEvent。而除DocumentEvent外,所有event classes的super class皆為java.util.EventObject。 我們在(圖1) 列舉了一些在GUI程式設計中常見,重要的Event classes及其階層關係。(讀者若有需要,也可自行查閱Java API,看看還有哪些Event classes可用。 ) 圖1
上机实践7 组件及事件处理2 实验1 方程求根 2.模板代码 SquareEquation.java public class SquareEquation { double a,b,c; double root1,root2; public void setA(double a) { this.a=a; } public void setB(double b) { this.b=b; } public void setC(double c) { this.c=c; } public double getRootOne() throws NoRealRootException,NoSquareEquationException { if(a!=0) { double disk=b*b-4*a*c; if(disk>=0) { root1=(-b+Math.sqrt(disk))/(2*a); } else { throw new NoRealRootException("没有实根"); } } else { throw new NoRealRootException("不是二次方程"); } return root1; } public double getRootTwo() throws NoRealRootException,NoSquareEquationException { if(a!=0) { double disk=b*b-4*a*c; if(disk>=0) { root2=(-b-Math.sqrt(disk))/(2*a); }
else { throw new NoRealRootException("没有实根"); } } else { throw new NoRealRootException("不是二次方程"); } return root2; } } class NoRealRootException extends Exception { String message; NoRealRootException(String s) { message=s; } public String getMessage() { return message; } } class NoSquareEquationException extends Exception { String message; NoSquareEquationException(String s) { message=s; } public String getMessage() { return message; } } EquationFrame.java import java.awt.*; import java.awt.event.*; public class EquationFrame extends Frame implements ActionListener { SquareEquation equation; TextField textA,textB,textC; TextArea showRoots; Button controlButton; public EquationFrame() { equation=new SquareEquation(); textA=new TextField(8); textB=new TextField(8); textC=new TextField(8); showRoots=new TextArea(); controlButton=new Button("确定");
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();
教案首页(以2课时为单元)
事件处理 所谓事件,实际就是用户对程序的某一种功能性操作。自从JDK1.1以后,Java的事件处理模式都是以委托事件模式(Delegation Event Model)来处理用户所触发的事件。这就是说,当用户触发的事件不是我们想要的事件时,我们就不需要进行处理,这样就增加了系统的效率,整个事件处理结构也变得很清晰。 事件处理需要注意三个问题:第一是事件产生的来源(Source),也就是说什么组件要被处理。比如按钮Button被单击,则事件来源就是按钮;第二就是什么事件要被处理。一般来说事件是和组件相对应的,什么样的组件就会触发什么样的事件,而往往一个组件可能会触发多个事件,这就需要我们按具体情况进行设计。Java中的委托事件模式在此有要个规定,就是说需要对哪个组件进行事件处理,则必须给这个组件进行事件注册。一般来说这种注册很简单,基本都是用方法“addXXXListener”来注册,也就是给组件加上事件监听器。比如按钮组件就需要用addActionListener来进行注册;第三就是编写事件处理程序了,用户编程定义每个特定事件发生时程序应做出何种响应,并且这些响应代码会在对应的事件发生时由系统自动调用。比如按钮的事件处理我们都写在方法actionPerformed()中。 Java中的事件相关类基本都在java.awt.event包,它提供AWT事件所需的类和接口,我们把这些事件称为AWTEvent,并分为两大类:Low-level-Event和Semantic Event,前者指的是一些低层次的事件,后者指一些有意义的动作。为了使大家清楚AWTEvent事件结构 在此我们将以上事件类及其相关内容列表如下 AWT Event
第一篇 在JAVA程序设计中,事件的处理是非常重要的,尤其是在需要自定义事件和设计JavaBean 时.对事件的处理过程有一个完整的认识对于编程是很有帮助的。 下面用一个演示性的例子来说明事件及其处理过程 一.事件的组成 如果想要自定义一个事件,则必须提供一个事件的监听接口以及一个事件类。在JAVA 中监听接口继承java.util.EventListener,事件类继承java.util.EventObject.很多基本的事件在编程环境中都已经提供可以很方便使用,但是在自定义事件中必须要要了解这些。 下面是一个事件类的代码,事件类可以向用户处理程序提供被监听类的信息 import java.util.*; public class PropertyEvent extends EventObject { public PropertyEvent(){} } 下面是监听接口的代码 import java.util.*; public interface PropertyListener extends EventListener { public void propertyChanged(PropertyEvent propertyEvent); } 二.事件的处理机制 下面是一段简要的被监听类代码,通过代码分析事件处理过程 import java.util.*; public class Exam { private int property; //listeners用来存放已注册的监听对象 private Set listeners= new HashSet(); ..... public void addListener(PropertyListener propertyListener){ //listeners必须保证只能被一个线程访问 synchronized(listeners){ listeners.add(propertyListener); } } public void firePropertyChange(){ Iterator iterator; synchronized(listeners){ //将listeners中的类名放到iterator iterator = new HashSet(listeners).iterator(); }
实验五--Java事件处理
实验五 Java事件处理 实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理 事件的接口的概念 实验内容 1.图形用户界面设计程序(ArtFont.java) 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont 类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: ●当在文本框中输入文字后回车,在文本域 中显示输入的文字。 ●当分别选择粗体和斜体复选框时,文本域 中的文字分别显示粗体和斜体样式。 ●当点击颜色按钮时,出现颜色选择对话 框,选择需要的颜色,按确定按钮后,按 钮的前景色和文本域的前景色设置为选 定的颜色。 ●当选择字体样式下拉框中的某一字体样 式时,文本域中的文字设置为指定的字体 样式。 ●当选择字体大小下拉框中的某一字体大 小时,文本域中的文字设置为指定的字体 大小。 ●当选择窗体样式下拉框中的某一窗体效 果时,窗体外观改变为指定的窗体外观。
图1 程序界面运行效果 package Sy; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;//字体样式下拉框 JComboBox fontSize;//字体大小下拉框 JComboBox windowStyle;//窗体样式下拉框 JCheckBox boldBx;// 粗体按钮 JCheckBox italicBx;// 斜体按钮 JButton colorBtn;// 颜色按钮 String[] fontNames;// 字体名称 String[] fontSizes;// 字体大小 JLabel label;// 输入提示标签
低级事件与语义事件 AWT 提供了二种概念性事件类型:低级事件和语义事件。 低级事件代表屏幕上可视化组件的低级输入或窗口系统事件。AWT 定义的低级事件类如下: java.util.EventObject java.awt.AWTEvent https://www.wendangku.net/doc/7b18181383.html,ponentEvent(组件改变大小,移动等) java.awt.event.FocusEvent(组件获得焦点,失去焦点) java.awt.event.InputEvent java.awt.event.KeyEvent(组件获得键按下、键释放等) java.awt.event.MouseEvent(组件获得鼠标按下、鼠标移动等) java.awt.event.ContainerEvent java.awt.event.WindowEvent 语义事件是在较高层次定义的,用于封装用户接口组件模型的语义。AWT 定义的语义事件类如下: java.util.EventObject java.awt.AWTEvent java.awt.event.ActionEvent(“执行命令”) java.awt.event.AdjustmentEvent(“值被调整”) java.awt.event.ItemEvent(“项目状态改变”) java.awt.event.TextEvent(“文本对象的值改变”) 注意这些语义事件不依赖特定的基于屏幕的组件类,但可以应用到实现类似语义模型的一套组件上。例如,Button 对象将在被按下时抛出“action”事件,List 对象将在双击其中项目时抛出“action”事件,当从菜单中选择MenuItem 时抛出“action”事件,而非可视化 Timer 对象在计时器到时时抛出“action”事件(后者为假设情况)。 事件监听器 EventListener 接口通常对于事件类代表的不同事件类型具有不同的方法。因此本质上,特定事件语义由 Event 类和 EventListener 中的特定方法合起来定义。例如,FocusListener 接口定义了两种方法,focusGained() 和focusLost(),分别用于 FocusEvent 类代表的两种事件类型。 该 API 试图提供一个合理的监听器接口类型数量而又不是为每种事件类型都提供单独的接口。 AWT 定义的低级监听器接口如下:
java 事件处理模型 当用户在Java GUI界面进行一些操作时,例如,移动鼠标、选取菜单项目等,将会引发相关事件(Event)。在Java中,事件用具体的对象来表示,用户的相关动作会由JVM(Java虚拟机)创建成相应的事件对象,用以描述事件来源、事件类型以及相关的信息。 1.事件处理流程 Java对事件的处理采用授权事件模型,也称为委托事件模型(Delegation Even t Model)。在这个模型下,每个组件都有相应的事件,如按钮具有单击事件,文本域具有内容改变事件等。当对于某个组件的事件被触发后,组件就会将事件发送给组件上注册的每一个事件监听器(EventListener),事件监听器中定义了与不同事件相对应的事件处理者,此时事件监听器会根据不同的事件信息调用不同的事件处理者,完成对这次事件的处理。只有向组件注册的事件监听器才会收到事件信息。 此种模型的显著特点是,当组件被触发事件后,本身不去处理,而将处理的操作交给第三方来完成。例如,当用户在GUI界面单击了一个按钮信息,此时按钮就是一个事件源对象,按钮本身没有权利对这次单击做出反应,需要做的就是将信息发送给本身注册的监听器(事件处理者)来处理。 在现实生活中,授权处理的实例也是非常的多。打个不太恰当的比喻,比如说有一位李先生,李先生可能会发生很多法律纠纷,可能是民事法律纠纷,也可能是刑事法律纠纷,那么李先生可以请律师,他可以授权王律师负责帮他打民事法律的官司,同时也可以授权张律师帮他打刑事法律的官司。 这个请律师的过程从李先生的角度来看,就是授权的过程,而从王律师和张律师的角度来看,一旦被授权,他们就得时刻对李先生负责,时刻“监听”李先生的事件信息,一旦发生民事纠纷了,王律师就要马上去处理,而一旦发生刑事纠纷了,张律师就要马上进行处理。此时此刻,李先生就是事件源,王律师是一个事件处理者,张律师是另外一个事件处理者,民事纠纷和刑事纠纷就是不同类型的事件。 2.事件处理元素 在事件处理的过程中,主要涉及三类对象,分别为事件、事件源和事件处理者。 Event事件 用户对界面的各种操作总是以类的形式出现,如键盘操作对应的事件类是Key Event。在授权事件模型中,事件是一个描述事件源状态发生改变的对象。通过鼠标、键盘与GUI界面直接或间接交互都会生成事件,如用户在文本框中键入文本后,按回车键,单击按钮,在一个下拉列表中选择一个条目等操作。
Java事件处理机制- 事件监听器的四种实现方式 自身类作为事件监听器 外部类作为事件监听器 匿名内部类作为事件监听器 内部类作为事件监听器 自身类作为事件监听器: Java代码复制代码收藏代码 import javax.swing.*; import java.awt.*; import java.awt.event.*; /** *Java事件处理机制:自身类作为事件监听器 *@author Winty(wintys@https://www.wendangku.net/doc/7b18181383.html,) *@version 2008-12-3 */ class ThisClassEvent extends JFrame implements ActionListener{ JButton btn; public ThisClassEvent(){ super("Java事件监听机制"); setLayout(new FlowLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); btn=new JButton("点击"); btn.addActionListener(this); getContentPane().add(btn); setBounds(200,200,300,160); setVisible(true); } /**************************************/ public void actionPerformed (ActionEvent e){ Container c=getContentPane(); c.setBackground(Color.red); } /**************************************/ public static void main(String args[]){
实验五 Java事件处理 实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验内容 1.图形用户界面设计程序(ArtFont.java) 在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont类的对象做监视器和匿名内部类的对象做监视器实现。 要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。 当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后, 按钮的前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字 体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字 体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。 图1 程序界面运行效果 package Sy;
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ArtFont extends JFrame { static ArtFont artFont; JComboBox fontType;//字体样式下拉框 JComboBox fontSize;//字体大小下拉框 JComboBox windowStyle;//窗体样式下拉框JCheckBox boldBx;// 粗体按钮 JCheckBox italicBx;// 斜体按钮 JButton colorBtn;// 颜色按钮 String[] fontNames;// 字体名称 String[] fontSizes;// 字体大小 JLabel label;// 输入提示标签 JTextField inputText;// 文字输入框 JTextArea txtArea;// 文字显示区 JPanel northPanel;// 字体设置 JPanel centerPanel;// 显示效果区 JPanel southPanel;//样式设置
实验四Java事件处理 实验目的 1.掌握Java语言中的事件处理方法 2.掌握Java语言中事件源、监视器和处理事件的接口的概念 实验导读 1. Java事件处理简介 学习组件除了了解组件的属性和功能外,学习组件除了了解组件的属性和功能外,一个更重要的方面是学习怎样处理组件上发生的界面事件。当用户在文本框中输入文本后按Enter键、单击按钮、在一个下拉列表框中选择一个条目等操作时,都发生界面事件。在学习处理事件时,必须很好地掌握事件源、监视器、处理事件的接口这三个概念。 ●事件源: 能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。也就是说,事件源必须是一个对象,而且这个对象必须是Java认为能够发生事件的对象。 ●监视器: 需要一个对象对事件源进行监视,以便对发生的事件作出处理。事件源通过调用相应的方法将某个对象作为自己的监视器。例如,对于文本框,这个方法是: addActionListener(监视器); 对于获取了监视器的文本框,当文本框获得输入焦点之后,如果用户按Enter键,Java 运行系统就自动用ActionEvent类创建一个对象,即发生了ActionEvent事件。也就是说,事件源获得监视器后,相应的操作就会导致事件的发生,并通知监视器,监视器就会做出相应的处理。 ●处理事件的接口: 监视器负责处理事件源发生的事件。监视器是一个对象,为了让监视器这个对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须在类体中给出该接口中所有方法的方法体,那么当事件源发生事件时,监视器就自动调用类实现的某个接口中的方法。 2.文本框上的ActionEvent事件 java.awt.event包中提供了许多事件类和处理各种事件的接口。对于文本框,这个接口的名字是ActionListener,这个接口中只有一个方法: public void actionPerformed(ActionEvent e) 当在文本框中输入字符并按Enter键时,java.awt.event包中的ActionEvent类自动创建一个事件对象,并将它传递给actionPerformed(ActionEvent e)方法中的参数e,监视器自动调用这个方法对发生的事件做出处理。
Java事件机制理解及应用 1.从总体看事件机制 其实事件机制是一种处理世界的方式和方法。传统的顺序程序设计总是按照流程来安排所做的工作,而事件机制的特点在于:等待,如果有事情发生则处理之。这样的好处是顺序程序设计在没有事情做的时候也必须循环运行,做毫无效率的空的循环工作。而事件机制在没有事情的时候则可以不做任何事情的等待,从而可以释放各种资源用于其它需要的程序。其实,这和计算机的中断处理是一个想法和道理的。 事件总是和某个对象相关,即每个事件必须有一个事件源。比如,按纽按下事件必须和某个按钮相关,而绝对不会出现了一个按纽按下事件,但是没有任何按钮存在。 同时,某个事件发生了,则可能该事件会引起一些相关效果,也可能虽然发生,但不产生任何效果。即事件发生可能会被处理,也可能不会被处理。 处理一个事件的操作,可以由事件发生的事件源进行,而更多的可能是由其它对象来进行。比如,在一个窗口中的“退出”按钮被按下,该事件引起窗口的关闭,这个关闭的操作必须由窗口,而不是该按钮来进行。 事件机制中,操作事件发生后进程的主体并不会不断地查询事件是否发生,而应该等待事件源在事件发生时通知它该事
件发生了。如窗口并不会不断地查询“退出”按钮是否按下,而应该在“退出”按钮按下事件发生时由该按钮通过某种方式来通知窗口事件发生了。 对于事件源而言,需要知道其事件发生的主体可能没有,可能有一个,也可能有多个。所以,当事件发生时,一般性地“说”:事件发生了,并给出事件发生的相关信息是事件源的责任,但哪些主体需要得到该通知则不是事件源的责任,而是其它主体的责任。即:需要监控某个事件源事件是否发生的主体必须负责监听事件源事件是否发生。 同一个事件源可以发生多种事件,同一类事件可以由不同的事件源引起。比如,按纽可以发生“按下”、“释放”、“获得焦点”等多个事件。而“获得焦点”事件也可以由按钮、窗体、列表框等多个事件源引起。 因此,事件处理机制必须表达和处理好这么几个东西:事件源,描述可能引起事件的对象的所有属性,包括在事件发生时发出通知。事件,描述和处理事件的所有信息。主体,负责对其关心的事件发生后的处理。事件监听,负责监听主体关心的事件源是否发生相关的事件,并在事件发生时将事件的信息传递给主体。 2.Java的事件处理机制概览 根据事件处理机制的总体情况,Java从总体上采用了四个对象(类)来完成对事件的处理。