搜档网
当前位置:搜档网 › java 树组件事件

java 树组件事件

java  树组件事件
java  树组件事件

java 树组件事件

单击树的叶子节点,可以触发TreeSelectionEvent树事件,即树中的节点可以发生选择事件。一个树可以使用addTreeSelectionListener方法为树添加一个监视器,处理事件的接口是TreeSelectionListener。树通过使用getLastSelectedPathComp onent()方法获取选中的节点,使用getUserObject()方法得到与节点相关的信息。

如果树发生事件,树是事件源,而继承TreeSelectionListener接口的为事件处理者。当单击一个树中节点,TreeSelectionEvent类就会创建一个事件对象。TreeSe lectionEvent常用的方法如表10-5所示:

实验项目3 组件与事件处理第2部分

实验项目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;

第5章Java图形界面编程与事件响应

5.1 抽象窗口工具集AWT 5.1 抽象窗口工具集AWT 设计Java图形用户界面(GUI, Graphics User 5.1 抽象窗口工具集AWT(续1完) java.awt AWT核心包,包括组件类,事件类等 5.2 Java图形类(续1) 5.4 容器与容器类组件 (1)容器有一定范围,容器一般都是矩形,容器范围边界可

5.4 容器与容器类组件(续1) 5.4 容器与容器类组件(续2完) 5.5 Java事件类(续1) 5.5 Java事件类(续2完) 5.6 Java事件响应机制 5.6 Java事件响应机制(续1)

5.6 Java事件响应机制(续2) 5.6 Java事件响应机制(续3) 5.6 Java事件响应机制(续4) 5.6 Java事件响应机制(续5) 5.6 Java事件响应机制(续6) 5.6 Java事件响应机制(续7)

5.6 Java事件响应机制(续8) 组件可以响应的事件 5.6 Java事件响应机制(续9) 5.6 Java事件响应机制(续10)例5.1一个多监听的例子。5.6 Java事件响应机制(续11) //第一个内嵌事件响应类 5.6 Java事件响应机制(续12) //第二个内嵌事件响应类5.6 Java事件响应机制(续13) //第三个内嵌事件响应类

5.6 Java事件响应机制(续14) public void display()5.6 Java事件响应机制(续15完) public static void main(String args[]) { C5_1 c=new C5_1(); c.display(); } Ch5-26 5.7 Java事件适配器 5.7 Java事件适配器(续1) Listener接口对应的Adapter抽象类 5.7 Java事件适配器(续2) 例5.2将例5.1改造成Adapter类事件处理方式。5.7 Java事件适配器(续3完) class MyEvent2 extends WindowAdapter

Java程序设计与实践教程 王薇主编 答案

第1章JAVA简介 一、判断题 1.√ 2.√ 3.? 4.? 5.? 6.√ 7.√ 8.√ 9.? 10.? 二、填空题 1.Application Applet 2. 类(字节码文件、目标文件) .class 3.对象 4. 主 5. J2SE J2EE J2ME 三、选择题 1.B 2. D 3.B 4.B 5. A 四、简答题 1.参考答案 Java语言是简单的、面向对象的、分布式的、健壮的、安全的、体系结构中立的、可 移植的、编译解释型的、高性能的、多线程的、动态的等等。 2.参考答案 Java程序执行的具体过程如图1所示。 图1 Java程序的运行机制 3.参考答案 Java程序在计算机在执行要经历以下几个阶段: (1)使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境 (JCreater、Eclipse、MyEclipse等)编辑Java源文件,其文件扩展名为.java。 (2)通过编译使.java的文件生成一个同名的.class文件。 (3)通过解释方式将.class的字节码文件转变为由0和1组成的二进制指令执行。 在以上阶段中可以看出Java程序的执行包括了编译和解释两种方式。 第2章Java 语法基础 一、判断题

1. ? 2.√ 3. ? 4.? 5.? 二、填空题 1.10 2. 单精度双精度 3. n%13 !=0?false:true 4.接口 5. false 三、选择题 1.D 2. C 3.D 4.A 5. C 第3章程序流程控制 一、判断题 1.错误 2.? 3.? 4.? 5.√ 二、填空题 1.循环 2. if 3.case switch 4. while do-while 5. continue 三、选择题 1.D 2. C 3.C 4.B 5. C 第4章数组 一、判断题 1. ? 2. √ 3. √ 4. √ 5.? 二、填空题 1.类型 2. new 3.长度 4. 分配空间 5. 3 6 9 三、选择题 1.D 2. A 3.C 4.B 5. B 第5章类和对象 一、判断题 1.√ 2.√ 3.? 4.? 5.√ 6.? 7.√ 8.? 9.? 10.√ 11.√ 12.√ 13.? 14.? 15. ? 二、填空题 1.public default 2. class 属性方法 3.public static void main(String args[]){} 4. new

实验五Java事件处理

实验五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 = "宋体 ";

JavaSwing中处理各组件事件的一般步骤完整版

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中处理各组件事件的一般步骤

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); }

2019年Java高级程序设计期末复习题

Java高级程序设计第二学期期末复习题 一、判断题 1. 是对象可以序列化接口。(√) 2. 包是Java语言用来构建图形用户界面(GUI)的类库。(√) 3. 容器是Component的子类,一个容器可以容纳多个构件,并使他们成为一个整体。(√) 4. Java中所有的类都是通过直接或间接地继承类得到的。(√) 5. Java的图形用户界面的最基本的组成部分就是构件(Component)。(√) 6. 在Swing中用重量级的构件替代了AWT中的轻量级的构件。(X) 7. 与AWT构件不同,Swing构件不能直接添加到顶层容器中,它必须添加到一个与Swing顶层容器相关联的内容面板(contentPane)上。(√) 8. 类Panel默认的布局管理器是GridLayout。(X) 9. 每个Java小应用程序必须定义为Jframe类的子类。(√) 10. 使用UDP通信时,用DatagramPacket类把要发送的信息打包。(√)11.AWT组件称为重型组件(√) 组件称为轻型组件(√) 13.容器类不是GUI组件(X) 14.使用add方法可以在框架的内容窗格中添加组件(√) 是最简单的布局管理器(√) 16.布局管理器GridLayout不是以网格(矩阵)的形式排列组件(X) 17.布局管理器的属性不可以动态的改变(X) 18.每一时刻,一个容器只能有一个布局管理器(√) 19.要创建一个用户界面,需要创建一个框架或applet来存放用户界面组件(√)类是所有用户界面的父类(√) 21. JFrame实例可以添加到容器中。( F ) 22. JCheckBox继承了AbstractButton类的所有属性。( T ) 23. JTextArea可以让用户输入多行文字。( T ) 24. JSlider与JScrollbor类似,但是JSlider具有更多的属性和更多是显示形式。( T ) 类继承了JTextComponent类,而JTextComponent类继承JComponent类。( T ) 26. 从应用程序创建一个子窗口,不用先创建JFrame的一个子类。( F ) 27. 在一个文本域中按下回车键就触发了ActionEvent事件。( T ) 28. Java使用事件委托处理模型来处理事件,源对象和监听对象可以是同一个对象。( T ) 29. JDBC是指Java程序与数据库连接的一种机制。( T ) 30.可以给一个面板添加框架。(F ) 31. File类提供实现文件读写的操作方法。(T) 32. 时一个读取字符的类。(T) 33.垂直文本位置指定文本相对于图标的垂直位置。(T) 34.不可以同时设置按钮上的文本和图标。(F) 35.标签是显示一小段文字、一幅图片或者二者皆有的区域。(T) 36.组合框是包含项目的一个列表,用户可以从中进行选则。(T)

java 按钮事件

代码如下,注意注释: 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:

JAVA复习题(有答案)

复习题 一、选择题 1、下列Java标志符中合法的是:() A H3_sum B -name C student# D 9_Hello123 源文件和编译后的文件扩展名分别为() \ A. .class和.java B. .java和.class C. .class和.class D. .java和.java 3.对于同一消息,对象可以产生不同的行为,这称为类的什么特性()A)继承性B)封装性C)多态性D)抽象性 4、用来引入包语句的关键词是:() A)import B)abstract C)package D)extends ) 5.对于小程序,当离开包含Applet的主页后又再返回时将调用()方法。A)start( ) B)init( ) C)destroy( ) D)stop( ) 6.下列对Java中的继承描述错误的说法是() A.子类只能有一个父类 B.子类可作为另一个子类的父类 < C.子类可以访问父类的私有属性 D.子类继承父类的方法访问权限保持不变 7.哪种循环在条件表达式被计算之前至少执行循环体语句一次( ) A)do-while循环B)for循环C)while循环D)以上都不是8.定义数组String[] a={"ab","abc","abcd","abcde"},数组中a[1]指的是()。¥ D.数组越界 9.如果希望组件从左往右,从上到下自动布局界面,应使用哪种布局()A)没有B)BorderLayout C)FlowLayout D)GridLayout 10.下列说法正确的是() A. 最终类在特殊情况下可以有子类 B. 抽象类只能有一个子类 ] C. 多态可以通过方法重写和方法重载实现 D. 抽象类不可以声明成员变量和成员方法,只能声明抽象方法 11.下列语句中访问类的方法正确的是:() A)B)( ) C)book->name D)book_name 12.下列选项中哪个是类Pen的构造方法() $ A)public void Pen() {} B)public static Pen() {}

实验14 Swing组件及事件处理(一)

实验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程序设计题目及答案(1)

Java程序设计题目及答案(1) 一、单选题 1:使用SQL语句从数据库中查询记录,应使用( A)。 A:SELECT B:INSERT C:DELETE D:UPDATE 2:Java的输入输出流可以分为(C )。 A:位流和文件流 B:位流和字节流 C:位流和字符流 D:文件流和字符流 3:下面( C)是Java语言中正确的标识符。 A:3com B:import C:that D:this 4:关于方法的说法( A)是正确的。 A:方法中的形参可以和方法所属类的属性相同 B:方法必须有形参 C:同类不同的方法中不能有同名的自变量,否则回产生不可预测的结果 D:没有返回值的方法可以用void来表示,也可以不加 5:面向对象的的方法与面向过程的方法最大的不同在于( B)。 A:以功能为中心 B:以数据为中心 C:以功能和数据为中心 D:以事件驱动为中心 6:创建字符串s:String s=new String(“hello”);下面( D)语句将改变s。A:s.append(“aaa”); B:s.concat(s); C:s.substring(3) D:以上语句都不会 7:下列关于finally说法正确的是( C)。 A:finally语句应该放在所有例外控制器的最前面

B:如果程序在前面的例外控制器中匹配到了合适例外,就不再执行finally 语句了 C:无论程序是否找到合适的例外控制器,都会去执行finally语句 D:如果程序在前面的例外控制器中匹配到了多个合适的例外,就不再执行finally语句了 8:初始的HSB表示(A )。 A:Hue Saturation Brightness B:Hue Shadows Balance C:Han in the Sky with Diamonds D:以上都不对 9:下列关于Javabean的说法错误的是( C)。 A:Javabean必须是一个公共类(public) B:Javabean必须有一个公共类(public)的无参数的构造方法 C:Javabean中的属性必须是公共的(public) D:Javabean通常要作为某些事件的事件源或监听器 10:下列( C)语句是加载JDBC驱动程序的语句。 A:Statement SQL语句变量=连接变量.createStatement( ) B:Connection 连接变量=DriverManager.getConnection(数据库URL,用户帐号,用户密码) C:Class.forName(JDBC驱动程序名) D:连接变量.close() 11:要画一个左上角顶点是(100,100),右下角顶点是(200,200)的矩形,下面哪个命令是正确的是(C )。 A:drawRect(100,100,200,200) B:drawRect(200,200,100,100) C:drawRect(100,100,100,100) D:drawRect(100,100) (200,200) 12:下面(D )组件把用户的输入当整数类型存储。 A:JTextArea B:JButton C:JTextField D:都不是 13:JavaBean主要指组件的开发,(A )用于图形界面。 A:可以 B:不可以 C:因系统不同而不同 D:不知道

SUN JAVA 程序员复习题1 3

Sun Java程序员模拟题(1) 1.JDK由组成以下哪几部分组成?(选三项)ABD A.Java编程语言 B.工具及工具的API C.Java EE扩展API D.Java平台虚拟机 5.下列有关main()方法的签名正确的是哪些?(选两项)AC A.public static void main(String[]args){} B.public static void main(){} C.public static void main(String args[]){} D.public void static main(String[]args){} 22.下列关于继承优点的叙述正确的是哪几项?(选三项)ABC A.可以创建更为特殊的类型 B.消除重复代码 C.便于维护 D.执行效率高 35.Java语言中提供了哪些元素来支持封装?(选三项)ACD A.class语句 B.new语句 C.package语句 D.访问修饰符 36.下列哪些访问修饰符是在子类中可见的?(选两项)CD A.private B.default C.protected D.public (访问权限逐步增大) 38.下列有关抽象方法叙述正确的是哪项?(选两项)BC A.抽象方法和普通方法一样,只是前面多加一个修饰符asbtract B.抽象方法没有方法体 C.包含抽象方法的类的具体子类必须提供具体的覆盖方法 D.抽象方法可以包含在任何类中 39.public class TestDemo{ private int x=2;

static int y=3; public void method(){ final int i=100; int j=10; class Cinner{ public void mymethod(){ //Here } } } } 在Here处可以访问的变量是哪些?(选三项)ABC A.x B.y C.i D.j 45.关于try...catch...finally结构,描述正确的是哪项?(选两项)AD A.可以有多个catch B.只能有一个catch C.finally必须有 D.可以没有catch 1.以下哪些包是Java标准库中常用的包?(选三项)BCD A.javax.servlet.http https://www.sodocs.net/doc/5a15876990.html,ng基本包 C.java.util工具包 D.java.sql数据库操作包 16.现有:BCE 1.class Synapse{定义一个父类 2.protected int gap(){return7;} 3.} 4. 5.class Creb extends Synapse{定义一个子类 6.//insert code here覆盖父类中的方法,要求:访问权限大于等于父类中该方法的访问权限。//访问权限修饰符从高到低为:public protected default(不写)private

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

上机实践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到72为正确,101之后为错误! 1.Java是一种严格的面向对象语言,编写的所有代码都限定在类内完成。 2.Java中引入包的概念是为了减少命名冲突,扩大名字空间。 3.Java既是开发环境,又是应用环境,它代表了一种新的计算模式。 4.Java中的数组是用来表示一组同类型数据的数据结构,且数组是定长的,初始化以后,数组的大小不会再动态变化。 5.Java中的字符串是内存中连续排列的一个或多个字符。 6.Java的封装性体现在将方法和数据封装在一个类中。 7.Java中的每种事件类都有一个对应的接口,接口中申明了一个或多个抽象的事件处理方法,凡是需要接收并处理事件类对象的类,都需要实现相应的接口。 9.在Java中,使用构造函数是生成对象的唯一方法。 10.在Java中,this用于指代本类,super用于指代其父类。 11.在Java中,n维数组只是n-1维数组的数组。 12.在Java中,复合语句是一对花括号“{”和“}”括起来的语句组,也称为块。从这种意义上说,类定义和方法定义都可以看作一个块。 13.在Java中,环境变量classpath将指示javac编译器如何查找所需要的对象。

14.如果Java文件中包含一个公有类,则该文件的文件名必须与该公有类一致。 15.语句是Java最小的执行单元,各语句间以分号分隔。 16.一个Java源文件可包括一个package语句和任意多个import语句,但package语句必须在前面。 17.Object是Java程序中所有类的直接和间接父类,也是类库中所有类的父类,处在类层次的最高点。 18.JVM的代码格式为压缩的字节码,因而效率较高。 19.OOP技术把问题看成是相互作用的事物的集合,用属性来描述事物,而把对它的操作定义为方法。 20.在访问权限修饰符中,protected修饰符和无修饰符时的根本区别仅在于不同包的子类是否可以对其访问。 21.static成员与类相对应,不需要创建对象就可使用。 22.在while循环中,循环体有可能一次也不执行。 23.Vector类中的元素不能是简单数据类型。 21.Vector是一组对象的集合,可以表达一个完整的数据序列。 22.在创建Vector序列时,不需要指明序列中元素的类型,可以在使用时确定。 23.如果要将整数15存入一个Vector向量中,需采用封装类Integer将其转化为对象。 24.语句“char a=78;”可正常通过编译,因为Java编译系统

Java的事件处理机制

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();

java 事件处理模型

java 事件处理模型 当用户在Java GUI界面进行一些操作时,例如,移动鼠标、选取菜单项目等,将会引发相关事件(Event)。在Java中,事件用具体的对象来表示,用户的相关动作会由JVM(Java虚拟机)创建成相应的事件对象,用以描述事件来源、事件类型以及相关的信息。 1.事件处理流程 Java对事件的处理采用授权事件模型,也称为委托事件模型(Delegation Even t Model)。在这个模型下,每个组件都有相应的事件,如按钮具有单击事件,文本域具有内容改变事件等。当对于某个组件的事件被触发后,组件就会将事件发送给组件上注册的每一个事件监听器(EventListener),事件监听器中定义了与不同事件相对应的事件处理者,此时事件监听器会根据不同的事件信息调用不同的事件处理者,完成对这次事件的处理。只有向组件注册的事件监听器才会收到事件信息。 此种模型的显著特点是,当组件被触发事件后,本身不去处理,而将处理的操作交给第三方来完成。例如,当用户在GUI界面单击了一个按钮信息,此时按钮就是一个事件源对象,按钮本身没有权利对这次单击做出反应,需要做的就是将信息发送给本身注册的监听器(事件处理者)来处理。 在现实生活中,授权处理的实例也是非常的多。打个不太恰当的比喻,比如说有一位李先生,李先生可能会发生很多法律纠纷,可能是民事法律纠纷,也可能是刑事法律纠纷,那么李先生可以请律师,他可以授权王律师负责帮他打民事法律的官司,同时也可以授权张律师帮他打刑事法律的官司。 这个请律师的过程从李先生的角度来看,就是授权的过程,而从王律师和张律师的角度来看,一旦被授权,他们就得时刻对李先生负责,时刻“监听”李先生的事件信息,一旦发生民事纠纷了,王律师就要马上去处理,而一旦发生刑事纠纷了,张律师就要马上进行处理。此时此刻,李先生就是事件源,王律师是一个事件处理者,张律师是另外一个事件处理者,民事纠纷和刑事纠纷就是不同类型的事件。 2.事件处理元素 在事件处理的过程中,主要涉及三类对象,分别为事件、事件源和事件处理者。 Event事件 用户对界面的各种操作总是以类的形式出现,如键盘操作对应的事件类是Key Event。在授权事件模型中,事件是一个描述事件源状态发生改变的对象。通过鼠标、键盘与GUI界面直接或间接交互都会生成事件,如用户在文本框中键入文本后,按回车键,单击按钮,在一个下拉列表中选择一个条目等操作。

相关主题