收藏 分享(赏)

java程序设计实用教程_(第3版)、_课后答案.doc

上传人:HR专家 文档编号:11255424 上传时间:2020-03-04 格式:DOC 页数:47 大小:291.50KB
下载 相关 举报
java程序设计实用教程_(第3版)、_课后答案.doc_第1页
第1页 / 共47页
java程序设计实用教程_(第3版)、_课后答案.doc_第2页
第2页 / 共47页
java程序设计实用教程_(第3版)、_课后答案.doc_第3页
第3页 / 共47页
java程序设计实用教程_(第3版)、_课后答案.doc_第4页
第4页 / 共47页
java程序设计实用教程_(第3版)、_课后答案.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、第一章1Java 具有那些适合在 Internet 环境中的特点?【答】简单性和完全面向对象,平台无关性,安全性和可靠性,多线程,高效的网络编程。2Java 保留、放弃了 C/C+语言中哪些语法和面向对象机制?为什么需要这样做?【答】 在语法规则方面,Java 语言放弃了全程变量、goto 语句、宏定义、全局函数以及结构、联合和指针数据类型,使 Java 语言更简单、更精练。在面向对象概念方面,Java 语言放弃了多元继承、友元类和运算符重载,采用 “单重继承+ 接口”的方式代替多重继承,提供语言级的内存自动管理和异常处理方式,使 Java语言更健壮、更安全、更高效。3Java 对原程序文件的

2、命名规则有什么要求?源程序文件编译后生成什么文件?【答】 要求:源程序文件与类同名,文件扩展名为.java ;编译后生成字节码文件(*.class) 。4Java 程序的运行机制是怎样的?与 C+或其他语言有什么不同?【答】Java 的每一个类都有一个 class 文件和它对应,Java 在程序的启动的时候将程序运行需要用到的类加载到虚拟机中,根据 Java 的虚拟机规范进行连接(动态连接) ,程序的组装是在运行的时候完成的C+和其他的编译型的语言一样,它的程序的组装方式是一种传统的组装方式。 C+在编译的时候生成适用于某一平台的二进制代码,在连接的时候找到需要调用的库,然后将这些库中的代码连

3、接进可执行程序之中,生成的可执行程序运行速度非常的快,但是可执行代码已经变成了一个整体,不可能再分开5什么是平台无关性?Java 是怎样实现平台无关性的?【答】平台无关性即 Java 程序的运行不依赖于操作系统。 Java 采用虚拟机技术实现平台无关性。程序由虚拟机解释执行,不同的操作系统上运行不同版本的 Java 虚拟机。6Java 应用程序由哪两种形式?他们的运行方式有什么不同?【答】Application 和 applet 两种形式,其中 application 是能够独立运行的应用程序,既可以以 DOS 的命令方式运行,也可以以图形用户界面方式运行。Applet 是可以嵌入页面的最小应

4、用程序,不能独立运行,必须嵌入超文本中,由浏览器 显示运行。7什么是解释执行?Java 怎样解释执行两种应用程序?【答】解释执行即将字节码解释成本地机器码并执行。Java 源程序文件经编译后生成字节码文件,若是 application 应用程序,则将字节码文件交由 Java 解释器解释执行,最后在 windows 操作系统上运行。若是 applet 应用程序,则将字节码文件嵌入超文本文件并下载到 web 浏览器上,最后由 windows 操作系统中的 Java虚拟机运行。8.作为一个软件开发人员,应该具备那些基础知识用以开发 windows 应用程序?【答】略第 2 章 1标示符和关键字在定义

5、和使用方面有何区别?【答】定义方面:标示符是用户定义的、以字母开头的字母数字序列,关键字是由 Java 语言定义的、具有特定含义的英文单词。使用方面:标示符用于命名变量、常量、类、对象等元素,每一个关键字都有特定的含义,不能被赋予别的含义。2Java 语言的基本数据类型有哪些?引用数据类型有哪些?【答】基本数据类型有:整数类型 byte、short、int、long,浮点数类型 float、double,字符类型 char,布尔类型 boolean;引用数据类型包括数组(array) 、类(class)和接口(interface)3试分析基本数据类型与引用数据类型的主要特点,并说明使用这两种变

6、量有哪些差别?【答】基本数据类型的变量保存数据值,而引用数据类型的变量保存地址。4算术运算、关系运算、逻辑运算和位运算各有哪些运算符?【答】算术运算:单目运算符有+(正) 、(负) 、+(自增) 、(自减) ,双目运算符有+(加) 、(减) 、*(乘) 、/(除) 、%(取余)关系运算:=(等于) 、!=(不等于) 、(大于) 、= (大于等于) 、(右移位) 、(无符号移位)5程序中为什么需要常量和变量?声明常量或变量时,为什么必须给出其所属的数据类型?【答】在程序中使用的数据大多需要经常变化,用常量值表示显然不够,因此每一种算法语言都提供常量和变量来存储数据。为了确定常量或变量的数据性质、

7、取值范围、以及它们占用的内存单元的字节数和它们参加的合法运算和操作。6什么是变量的作用域,声明变量时,如何确定变量的作用域?【答】 变量的作用域是指其作用范围。变量声明的位置决定了它的作用域7设 i 是一个整数类型变量,写出下列问题对应的表达式?(1) 判断 i 为奇数或偶数;【答】i%2=0 /取值为 true 时是偶数,否则是奇数(2) 判断 i 的值是否在 09 之间;【答】 (i0)j-)System.out.print(“ “+j);System.out.println();12下列程序希望用 for 语句求出 1n 累加和并显示,请问程序有错误吗?错在哪里?输出结果 i 和 s 的

8、值分别是多少?int i=1,n=10,s=0;for(i=1,i0;j-) /生成下一行数据tablej=tablej-1+tablej; /通式18输出下列方阵:(1) 输出如下形式的数字方阵(当 n=4 时):1 2 6 73 5 8 134 9 12 1410 11 15 16程序如下:Public class JmatPublic static void main(String args)(2)输出如下形式的数字方阵(当 n=4 时):1 2 5 104 3 6 119 8 7 1216 15 14 13解答采用二维数组的程序如下。public class Jmatpublic st

9、atic void main(String args) int n=4; /阶数int mat = new intnn;int k=1; /k 是自然数,递增变化for (int i=0;i=0;j-)matij = k+;for (int i=0;i= Mx,j (3)Mx,y应在该列上最小,有Mx,y matrowmax) /matrowmax为该行最大值max = j;boolean yes = true; /再判断 matrowmax是否在列上最小int j=0;while (yes for (int i=0;i=0 tablei = tablej;tablej = temp;priv

10、ate void permute(int n) /用递归方法求 n 个数的无重复全排列if (n=1)this.output();elsepermute(n-1);for (int j=0;jn-1;j+)swap(n-1,j);permute(n-1);swap(n-1,j); public static void main(String args) new Permutation(3);程序运行结果如下:1 2 32 1 33 2 12 3 11 3 23 1 23-20 Java 为什么不支持指针?C+的指针类型存在哪些潜在的错误?没有指针,Java 如何实现在 C+中用指针实现的功能?

11、例如,通过访问指针访问数组元素,通过指针使用字符串,方法参数传递地址,方法参数用于输出,方法返回非基本数据类型等。【答】由于指针往往在带来方便的同时也导致代码不安全的根源,如内存泄露等,同时也会使程序变得非常复杂难以理解,Java 语言明确说明取消了指针。 Java 使用引用代替了指针。3-21 Java 为什么不支持 C+的运算符重载特性?【答】这是为了防止运算符重载使得代码的功能变的不清晰。第 4 章 接口内部类和包4-1 什么是接口?接口和抽象类有哪些相同之处和不同之处?【答】接口是一组常量和抽象方法的集合。在 Java 中,接口是一种引用数据类型,用关键字 implements 声明。

12、接口与抽象类的区别为:相同点:1.两者都包含抽象方法,约定多个类共用方法的参数列表和返回值。2.两者都不能被实例化。3.两者都是引用数据类型,其变量可被赋值为子类或实现接口类的对象。不同点:1.抽象类约定多个子类之间共同使用的方法;接口约定多个互不相关类之间共同使用的方法。2.抽象类与子类之间采用单重继承机制;一个类实现多个接口则实现了多重继承的功能。3.抽象类及其类中成员具有与普通类一样的访问权限;接口的访问权限由 public 和缺省两种,接口中成员的访问权限均是 public。4.抽象类中可以包含非抽象方法,也可以声明构造方法;接口中的方法必须全部是抽象方法,不能声明构造方法。5.抽象类

13、中可以声明成员变量,子类可以对该成员变量赋值;接口中只能声明常量。4-2 为什么能够声明接口变量?接口变量能够获得什么样的值?【答】接口是引用数据类型可以声明接口变量。接口变量能够获得实现接口的类的对象,也称为接口对象。4-3 接口有哪些特点?为什么需要声明借口?接口是否具有继承性?接口中能否写构造方法?【答】接口特点:(1)接口及接口中成员的访问权限都是 public(2)接口中的成员方法都是公有的、抽象的实例成员方法,即默认修饰符为 public abstract。(3)接口中的所有抽象方法必须全部被实现接口的类覆盖。(4)接口中的成员变量都是常量(5)接口不能被实例化。接口中的方法都是抽

14、象的,构造方法不是抽象的所有不能写构造方法(6)接口是引用数据类型。Java 只支持单重继承,以“单重继承+接口”的方式代替多继承。接口可以继承一个已经存在的父接口。4-4 什么是单重继承?什么是多重继承?类的层次体系为什么需要多重继承?单重继承有什么缺点?既然有缺点,为什么 Java 仍然采用单重继承? Java 怎样实现多重继承?【答】单重继承就是一个类只能有一个父类。多继承就是可以有多个父类。现实中的对象往往表现出多种特性,用单重继承无法客观描绘,因此需要多重继承。但是 C+的多重继承过于复杂,因此 Java 用“单重继承+接口”代替了多重继承,以提高运行效率,增加安全性,降低复杂性。4

15、-5 类与类之间存在哪几种关系?【答】类与类之间有继承关系,还存在嵌套关系。4-6 在什么情况下需要声明内部类?内部类有哪些特性?【答】Java 不支持 C+的结构(struct)类型,当实际中需要使用一个结构时,可以声明一个类;但当结构作为数组的元素类型时,或当一个类中需要使用结构时,可以将结构声明为内部类。内部类特性可参看课本 P123。4-7 为什么是包?为什么需要包机制?Java 有哪些包?各有什么功能?【答】从逻辑概念看,包是类的集合,一个包中包含多个类;从存储概念看,包是类的组织方式,一个包对应一个文件夹,一个文件夹中包含多个字节码文件;包与类的关系,就像文件夹与文件的关系一样。为

16、解决字节码文件存放和类命名的问题,Java 提供了包机制。Java 的常用包及其作用可查看 P130 表 4-1 。4-8 Java 的 API 采用什么组织方式?怎样使用 Java 定义好的类?【答】Java 语言的 API 按照功能划分成若干包,每个包都有许多公有的类和接口。如果需要使用已定义好的一个包中的类或接口,可以使用 import 语句声明。4-9 Java 声明 Object 类的作用是什么? Object 类中声明了哪些方法?Object 类在 Java 类层次体系中的地位是怎样的?【答】Object 是 Java 中所有类的父类或祖先类,它定义了一个 Java 对象所需要的基

17、本操作和属性。定义的方法有:1.getClass()获得当前对象所在的类是什么、equals()比较两个对象是否相等、toString()将当前对象的信息用字符串描述、finalize()析构方法。4-10 Java 为什么需要声明基本数据类型的包装类?基本数据类型的包装类有哪些?【答】为实现完全面向对象的特性,Java 为每个基本数据类型都声明有对应的一个类。公有 8 个基本数据类型的包装类:Byte、Short、Integer、Long 、Float、Double、Character 、Boolean4-11 怎样将数值类型的数据转换成字符串?怎样将字符串转换成数值类型的数据?【答】Int

18、eger 类的静态方法 parseInt()和实例方法 intValue()都可以将一个字符串转换成 int值。Integer 类的静态方法 toBinaryString(int i)、toOctalString(int i)、Integer.toHexString(int i)可以将十进制 i 转化为二进制、八进制、十六进制、字符串。4-12 Java 为什么要将 Math 类声明为最终类?Math 类中有哪些常用方法?【答】Math 类提供提供 E、PI 常量和一组固定数学函数。都是静态可以直接通过类名引用,不需要继承。常用方法有:(1)求绝对值 abs(double a)(2)求最大值

19、max(double a,double b)(3)求最小值 min(double a,double b)(3)返回一个 0.01.0 之间的随机数 random()4-13 对数值变量或对象进行比较操作,到底应该采用 6 个关系运算符还是调用 equals()、compareTo()方法?是否每个对象都可以调用 equals()和 compareTo()方法?为什么?这两个方法在进行比较操作时有什么差别?它们在每个类中的含义都相同吗?【答】对数值、变量可以采用 6 个关系运算符,对象可以用后两者,但是并不是每个对象都可以调用这两个方法。具体用法及区别请看课本 P133 和 P136.4-14

20、System 类、Class 类和 Runtime 类各有哪些功能?在之前的程序中已用到这些类的哪些常量或方法?【答】System 类提供访问系统资源和标准输入 /输出流的方法,之前用到了 in 和 out 常量。Class 为类提供运行时信息,如名字、类型、以及父类等。Runtime 类可直接访问运行时资源。4-15 怎样表示日期与时间数据?怎样引用 java.util 包的类?【答】Java 以一个长整型表示一个日期,该长整型表示从格林尼治时间 1970-1-1 00:00:00 开始至某时刻的累积毫秒数。4-16 泛型类有什么作用?在什么情况下需要使用泛型类?【答】泛型的本质是参数化类型

21、,也就是说所操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口、和方法的创建中,分别被称为泛型类、泛型接口、泛型方法。泛型类引入的好处不仅在于减少代码量,还在于提供了编译时期数据类型的检查功能,可以提前预知错误的发生,减少代码安全性,二是减少了强制转换类型。第 5 章 异常处理5-1 程序中的错误有哪几种?分别能够在什么时刻被发现?【答】 程序错误按照性质可分为 3 类:语法错、语义错、逻辑错。1 语法错:违反语法规范的错误成为语法错( syntax error ),这类错误通常在编译时发现,又称为编译错,如标识符未声明、表达式中运算符与操作数类型不兼容、变量赋值时的类型与声明时的类

22、型不匹配、括号不匹配、语句末缺少分号等。2 语义错:如果在程序的语法上正确,但在语义上存在错误,则称为语义错( semantic error) ,又称为运行错(run-time error) ,语义错不能被编译系统发现,只有到程序运行时才能被发现,如输入数据格式错、除数为 0 错、给变量赋予超出其范围的值错等。3 逻辑错:如果程序通过编译,可运行,但运行结果与期望值不符,则这类错误称为逻辑错(logic error) ,例如,由于循环条件不正确而没有结果,循环次数不对等因素导致计算结果不正确等。5-2 Java 为什么要采用异常处理机制?Java 的异常处理是怎样实现的?异常处理机制能够解决程

23、序中遇到的所有错误吗?哪些错误不是异常处理能够解决的?【答】 异常处理和捕获和处理运行时错误的一种机制。异常处理机制使程序具有处理错误的能力。即使发生了运行错,应用程序能够捕获异常并及时处理异常,使程序从运行错误中很好地恢复并继续运行,而不会导致程序运行非正常终止。而且如果当前方法没有能力处理异常,还可以将异常转交给调用者处理。异常处理机制将运行时错误封装成若干错误类和异常类,并提供异常处理语句用于处理在程序中实现对运行时错误的发现和及时处理。异常处理机制并不能解决程序中的所有错误,例如内存溢出、栈溢出等。5-3 请说出 5 个 Java 的异常类。【答】 算术异常 ArithmeticExc

24、eption、空对象异常 NullPointerException、类型强制转换异常 ClassCastException、负数组长度异常 NegativeArraySizeException、数组下标越界异常 ArrayIndexOutOfBundsException 等5-4 请问运行没有 main()方法的类会怎样?【答】 此类错误是 Error 类,当运行没有 main()方法的类时,则产生类定义未找到的错误(NoClassDefFoundError) 。5-5 举例说明你在调试程序时,遇到过哪些错误和异常,采取什么办法解决问题的。【答】1.无效的游标状态 修改:首先查看 Result

25、Set 是否为空,若为空则修改之;其次,也是我遇到的,就是:举个例子说明,如下 rs.getString(1); rs.getString(3);/注意 3 和 2 的顺序颠倒了 rs.getString(2);/此时会出现异常 说明:ResultSet 只能按顺序访问列的值,不能颠倒,我猜想这可能是 JDBC 的一个BUG 吧。不过后来我看.NET 中的 DataReader 类后才恍然大悟,原来, ResultSet 的游标每向后移动,前面的数据就会被丢弃掉,这样做有利于提高访问速度。 2. ResultSet is closed 原因:一个 Statement 只能维持一个 Result

26、Set 为打开状态,后面的覆盖前面的,举个例子: ResultSet rs1 = stmt.excuteQuery(); ResultSet rs2 = stmt.excuteQuery(); String s = rs1.getString(1);/出现异常,因为 rs1 已经被关闭 3. 连接占线导致另一个 hstmt 原因:一个 Connection 只能维持一个 Statement 为打开状态 一个例子: Statement stmt1 = con.createStatement(); Statement stmt2 = con.createStatement(); stmts.exc

27、uteQuery(sql);/出现异常 其他异常 空指针异常 空指针异常应该说是最常见的异常了 原因主要有以下几点: 1.未初始化的变量(虽然已经声明) 2.使用了未初始化的对象(虽然已经声明) 注:引起这个异常的根本原因有可能隐藏的很深,空指针异常只不过是个表象而已(又被不幸的我遇到了).5-6 如何处理除数为 0 异常?【答】 进行除数运算时,先判断除数是否为 0,若为 0,则跳出提示。5-7 怎样处理数组下标异常?【答】 使用数组前先,判断下标是否小于数值长度,若不小于则提示数组下标有误。5-8 说明采用什么语句能够捕获并处理异常?【答】 Java 提供 try-catch-finall

28、y 语句来捕获和处理一个或多个异常。其中,try、catch、finally 是关键字。 catch 字句可以有一个或多个,但至少要有一个 catch 字句,finally 字句可以省略。5-9 为什么将字符串转换成数值类型时会抛出异常?抛出什么异常?【答】 并不是所有的字符串都能转换成数值型,当遇到一个不能转转换成数值型的字符串时,Java 抛出 NumberFormatException 异常。5-10 说明 throw 语句与 throws 子句的区别。【答】1.throws 用于抛出方法层次的异常, 并且直接由些方法调用异常处理类来处理该异常,所以它常用在方法的后面。比如 public

29、 static void main(String args) throws SQLException 2.throw 用于抛出代码层次的异常,常用于方法块里面的代码,常和 try.catch 语句块搭配实用,比 throws 的层次要低。5-11 什么情况下需要自定义异常类?【答】 当 Java 提供的异常类不能满足需要时,程序需要对自己抛出的异常类进行特殊处理,则可以自定义异常类。第 6 章 图形用户界面6-1 什么是组件?组件类与普通类有什么不同?【答】组件是构成图形用户界面的基本成分和核心元素;组件是具有以下特性的对象:运行时可见,能拥有并管理其他组件,在窗口中可操纵,可获得输入焦点等。

30、组件类Component 是一个抽象类,是 AWT 组件类层次结构的根类,它提供对组件操作的通用方法。6-2 设计 Windows 应用程序的图形用户界面需要哪些基本知识?【答】需要掌握 Java 组件的使用方法,理解委托事件处理模型,掌握多种布局方式。6-3 什么是容器组件?它有什么特点?Java 提供了哪些容器组件?【答】容器组件是一种能够容纳其他组件的特殊组件。特点:能容纳其他组件,并在其可视区域内显示这些组件。Java 提供了窗口(window)和面板(panel)两种容器。6-4 窗口与对话框有什么不同?框架与面板有什么不同?【答】对话框是窗口类的子类,对话框也是一种可移动的窗口,不

31、能作为应用程序的主窗口,它依赖于一个框架窗口而存在,当框架窗口关闭时,对话框也关闭。框架类是一种带标题栏并且可以改变大小的窗口;它是窗口类的子类,所以它可以独立存在,可被移动,可被最大化和最小化,有标题栏、边框、可添加菜单栏;而面板不能独立存在,必须包含在另一个容器里,面板没有标题,没有边框,不可添加菜单栏。6-5 什么是事件?什么是事件源?事件处理程序写在哪里?【答】事件是指一个状态的改变,或者一个活动的发生。产生事件的组件称为事件源。事件处理程序写在事件监听器接口中声明的方法中。如:单击事件的事件处理程序由ActionListener 接口中的 actionPerformed()方法实现。

32、6-6 如何理解 Windows 应用程序的图形用户界面是事件驱动的?【答】一个组件的多个事件之间,多个组件的多个事件之间,其事件处理方法的执行次序是有规律的:1.不同组件的事件或同一组件的不同事件具有约定的执行次序。2.各组件的事件处理方法是否执行以及执行次序,取决于用户操作。3.在一个事件处理方法中,程序按照语句的书写次序顺序执行。6-7 说明 Java 的委托事件模型。【答】事件源产生一个事件,并把这个事件发送到一个或多个监听程序,监听程序只是等待这个事件并处理它,然后返回。即程序把事件的处理“委托”给一段“代码” 。6-8 设计图形用户界面的 Java 应用程序,需要用到的组件分别在哪

33、些包中?事件分别在哪些包中?【答】 组件在 java.awt 包中,事件在 java.awt.Event 和 javax.swing.Event 包中。6-9 按钮组件能够注册哪些事件监听器?文本行组件能够注册哪些事件监听器?文本行和文本区组件能够响应的事件有什么不同?【答】按钮组件能够注册的事件监听器有ActionListener、ComponentListener、ItemListener 等。文本行组件能够注册的事件监听器有 ActionListener、ComponentListener、TextListener 等。文本行是单行文本编辑框,用于编辑一行字符串,文本区是一个多行文本编辑

34、框,它的基本操作与文本行类似,增加的是滚动条的显示和操作。6-10 是否可以对一个组件注册多个事件监听器?【答】可以。如果一个组件需要响应多个事件,则可以注册多个事件监听器。6-11 一个事件监听器是否可以处理多个组件上产生的操作?【答】一个事件监听器对应一个事件处理方法,如果多个组件产生的操作相同,则可以注册同一个事件监听器。6-12 在事件处理方法中,怎样区分不同的事件源组件?【答】事件接口中的所有事件处理方法,都采用相应的事件对象 e 作为参数,用 e.getSource()方法可返回产生当前事件对象的事件源组件。6-13 窗口上有哪些事件?每种事件在什么时候被触发?这些事件的触发次序是

35、怎样的?【答】窗口上的事件有:windowOPend,windowActivated,windowDeactivated,windowIconified,windowDeiconified,windowClosing,windowClosed。每种事件的触发分别在:打开窗口、激活窗口、窗口失去焦点、窗口最小化、窗口恢复、关闭窗口时、关闭窗口后。触发次序与前述书写顺序相同。6-14 Java 有几种关闭窗口处理方式?分别是怎样的?分别适用于哪些窗口组件?【答】Java 有 2 种关闭窗口处理方式。第一种是设置窗口关闭时隐藏方式的setDefaultCloseOperation()方法,第二种是写

36、窗口关闭事件处理程序即实现WindowListener 接口中的 windowClosing()方法。第一种适用于 JFrame 和 JDialog 等窗口组件,第二种适用于 Frame 和 Dialog 等窗口组件。6-15 Java 的布局方式有什么特点?Java 提供了哪些布局方式?【答】特点:Java 采用布局管理器对图形用户界面中的组件进行相对定位并自动改变组件大小,合理分布组件格局。当窗口大小改变时,各组件自身的大小将随之改变,而组件之间的相对位置不变,这样组件一般不会被覆盖。Java 提供了FlowLayout、BorderLayout、GridLayout 三种布局布局管理器类

37、。6-16 复选框和单选按钮有什么不同?分别用于什么场合?在事件处理程序中,怎样知道哪个复选框或单选按钮是选中的?【答】在同一组单选按钮中,任何时候最多只能有一个被选择,一旦选中一个单选按钮,则前一个选中的单选按钮会自动变为未选中状态。而复选框可多个同时被选中,且每个复选框选中与否的状态改变,并不影响其他复选框的状态。场合:单选按钮用来显示一组互斥的选择,复选框用来显示一组不互斥的选择。在事件处理程序中,用注册选择事件监听器的方法来判断复选框或单选按钮是否被选中。6-17 如果一个编辑框用于输入数值,但程序运行时却输入了非数字字符,问结果会怎样?程序中有哪些办法解决这个问题,怎样解决?【答】结

38、果会因输入错误而突然停止运行。程序中可以用 trycatch 捕获、处理异常的方法来解决这个问题。当遇到输入错误时,Java 将抛出异常,此时弹出一个提示信息对话框,提醒用户输入数据有错误,请用户重新输入。6-18 如何将 JComboBox 编辑框中新输入的值,加入到下拉列表中去,并使新值与下拉列表中原有值不重复?【答】通过添加单击事件监听器将 JcomboBox 编辑框中新输入的值加入到下拉列表中。通过 if 语句来确保新值与下拉列表中原有值不重复。6-19 如何使菜单项显现为分隔条状态?如何使菜单项显现单选状态?【答】实现 JmenuItem()和 addSeparator()方法使菜单

39、项显现为分离条状态。实现JradioButtonMenuItem()方法使菜单项显现单选状态。6-20 一个菜单中能否加入菜单项?能否加入另一个菜单?【答】一个菜单中可以加入菜单项,可以加入另一个菜单。6.21 窗口菜单与快捷菜单有什么差别?【答】窗口菜单是相对于窗口的,它出现在窗口的标题栏下,总是与窗口同时出现。而快捷菜单则是相对于某个指定组建的,当鼠标指向某个组件并单击右键时,则会弹出快捷菜单,一般比较简单。6.22 在文本区中,单击右键时欲弹出一个菜单,该怎样设计?【答】可以在文本区添加一个快捷菜单(popMenu)。6.23 如果窗口菜单中的某菜单项、快捷菜单中的某菜单项具有相同的菜单

40、标题并执行相同的操作,应该如何设计?【答】 可以给它们都注册单击事件监听器,那么在事件处理方法 actionPerformed()中以 e.getActionCommand()方法获得菜单项的标题,由于标题相同,可以执行相同的操作。6.24 如果希望在组件上绘图,通常在哪些组件上绘图?绘图程序写在哪里?【答】一般来讲,可以在任何组件上绘图,但由于很多组件上都有标题之类的文字,所以通常在窗口或面板之类的容器上绘制图形。此外,Java 提供画布(java.awt.Canvas)组件作为绘制图形的区域。在 Java.awt.Component 类中声明 paint()和 repaint()方法用于显

41、示和刷新图形。当创建一个对象时,系统会自动执行该组件的 paint()方法,绘制特定图形。因此,如果想在组建上绘图,则该类必须声明为继承某个组件类,让偶将绘图程序写在 paint()方法体中就可以了。6.25 根据以下极坐标放出,画出相应曲线图形。1.星形线 代码略 运行结果如下 2.心形线import java.awt.*; import java.awt.event.*; import javax.swing.*; public class HeartJFrame extends JFrame implements ComponentListener,ItemListener privat

42、e JComboBox combobox_color; public HeartJFrame() super(“心线“); this.setSize(600,400); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLayout(new FlowLayout(); Object data = Color.red,Color.green,Color.CYAN,Color.blue; combobox_color = new JComboBox(data); combobox_color.addItemListener(this); t

43、his.add(combobox_color); this.addComponentListener(this); this.setVisible(true); public void paint(Graphics g) int x0,y0; x0=this.getWidth()/2; y0=this.getHeight()/2; g.setColor(Color)combobox_color.getSelectedItem();/设置线的颜色为组合框选中的颜色 g.drawLine(x0, 0, x0, y0*2); g.drawLine(0, y0, x0*2, y0); int j=20

44、; while(j 100) for(int i=0;i 1023;i ) double angle=i*Math.PI/512;/ double radius=j*(1-Math.cos(angle);/求出半径; int x=(int)Math.round(radius*Math.cos(angle)*2); int y=(int)Math.round(radius*Math.sin(angle); g.fillOval(x0 x,y0 y,1,1); j=j 10; public void itemStateChanged(ItemEvent e) repaint(); public v

45、oid componentResized(ComponentEvent e) repaint(); public void componentHidden(ComponentEvent arg0) / TODO Auto-generated method stub public void componentMoved(ComponentEvent arg0) / TODO Auto-generated method stub public void componentShown(ComponentEvent arg0) / TODO Auto-generated method stub pub

46、lic static void main(String args) new HeartJFrame(); 3.阿基米德螺线import java.awt.*;import java.awt.event.*;import javax.swing.*;public class HelixJFrame extends JFrame implements ComponentListener, ActionListenerprivate JRadioButton colors; /表示颜色的单选按钮数组private HelixCanvas helix;public HelixJFrame()super

47、(“阿基米德螺旋线“); /边布局this.setSize(600,700);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.addComponentListener(this); /注册框架窗口的组件事件监听器JPanel jpanel = new JPanel(); /流布局,居中this.getContentPane().add(jpanel,“North“);ButtonGroup buttongroup = new ButtonGroup(); /按钮组colors = new JRadioButton3;colors0 = new

48、 JRadioButton(“red“,true); /创建单选按钮colors0.setForeground(Color.red);buttongroup.add(colors0); /单选按钮添加到按钮组jpanel.add(colors0); /单选按钮添加到子面板colors0.addActionListener(this);colors1 = new JRadioButton(“green“);colors1.setForeground(Color.green);buttongroup.add(colors1);jpanel.add(colors1);colors1.addActionListener(this);colors2 = new JRadioButton(“blue“);colors2.setForeground(Color.blue);buttongroup.add(colors2);jpanel.add(colors2);colors2.addActionListener(this);helix = new HelixCanvas(Color.red);thi

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报