当前位置:首页 >> 商业计划 >>

全国计算机等级考试二级Java语言程序设计试题及答案(一)概述

一、选择题(每小题1分,共40小题,共40分) 1.下列叙述中正确的是( )。

A.一个算法的空间复杂度大,则其时间复杂度必定大 B.一个算法的空间复杂度大,则其时间复杂度必定小 C.一个算法的时间复杂度大,则其空间复杂度必定小 D.上述3种说法都不对

D。 【解析】算法的时间复杂度和空间复杂度是从不同的角度来衡量算法的执行情况的,它 们之间没有内在联系。

2.开发软件时对提高开发人员工作效率至关重要的是( A.操作系统的资源管理功能 B.先进的软件开发工具和环境 C.程序员的数量 D.计算机的并行处理能力

)。

B。 【解析】先进的软件开发工具和环境对提高开发人员工作效率是至关重要的。

3.程序设计语言的基本成分是数据成分、运算成分、控制成分和( A.对象成分 B.变量成分 C.语句成分 D.传输成分

)。

D。 【解析】程序设计语言的基本成分有:数据成分,用于描述程序所涉及的数据;运算成 分,用于描述程序中所包含的运算;控制成分,用于描述程序中所包含的控制;传输成分, 用于表达程序中数据的传输。

4.对长度为 n 的线性表进行顺序查找,在最坏情况下需要比较的次数为( A.125 B.n/2 C.n D.n+l

)。

C。 【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个 元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况 下, 要查找的元素是表的最后一个元素或查找失败, 这两种情况都需要将这个元素与表

中的所有元素进行比较,因此比较次数为 n。

5.有下列二叉树,对此二叉树前序遍历的结果为(

)。

A.XZCYAB B.XYZABC C.XYABCZ D.XYAZBC

D。 【解析】对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子 树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。

6.下列叙述中正确的是(

)。

A.在面向对象的程序设计中,各个对象之间具有密切的关系 B.在面向对象的程序设计中,各个对象都是公用的 C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 D.上述3种说法都不对

C。 【解析】 面向对象的程序设计是用对象模拟问题领域中的实体, 各对象之间相对独立, 相互依赖性小,通过消息来实现对象之间的相互联系。

7.软件工程的理论和技术性研究的内容主要包括软件开发技术和( A.消除软件危机 B.软件工程管理 C.程序设计自动化 D.实现软件可重用

)。

B。 【解析】基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括软件开 发技术和软件工程管理。

8.在对象方法中,一个对象请求另一个对象为其服务的方式是通过发送( A.调用语句 B.命令 C.H 令

)。

D.消息

D。 【解析】在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要 求,但并不指示接受者应该怎么完成这些处理。

9.下列选项中,是软件调试技术的是( A.错误推断 B.集成测试 C.回溯法 D.边界值分析

)。

C。 【解析】软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推 断都是黑盒测试的方法。

10.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( A.DB 包括 DBS 和 DBMS B.DBMS 包括 DB 和 DBS C.DBS 包括 DB 和 DBMS D.没有任何关系

)。

C。 【解析】数据库系统(DBS)由数据库(DB)、数据库管理系统(DBMS)、数据库管理员、 硬件平台和软件平台5个部分组成,因此 DB 和 DBMS 都是 DBS 的组成部分。 11.下列( )不是高级程序设计语言。 A.FORTRAN B.Java C.C++ D.Visual ASM D。 【解析】高级语言是一类人工设计的语言,因为它对具体的算法进行了描述,所以又称为 算法语言。 它是面向程序设计独立于计算机的硬件。 目前, 计算机常用的高级语言有: BASIC 语言、FORTRAN 语言、COBOL 语言、PASCAL 语言、C 语言、PROLOG 语言、而当前流行的,面 向对象的程序设计语言有 C++和用于网络环境的程序设计语言 Java 等。 12.16 根地址总线的寻址范围是( A.531KB B.64KB C.640KB D.1MB )。

B。 【解析】假设地址总线有 n 条,内存的寻址范围是 2n。 13.在一所大学中,每个系都有自己的局域网,则连接各个系的校园网( A.是广域网 B.还是局域网 C.是地区网 D.这些局域网不能互连 )。

B。 【解析】广域网是指远距离的计算机互联网络,分布范围可达几千千米乃至上万千米甚至 跨越国界、 州界、 遍及全球范围。 局域网是指一个局部区域中的、 近距离的计算机互联网络, 通常采用有线方式连接,分布范围从几百米到几千米。例如,一座大楼内或相邻的几座楼之 间的互联网络。一个单位、学校内部的网络多为局域网。 14.下列关于信息加密的叙述中,正确的是( A.加密通过加密算法实现 B.加密前的文件称为密文 C.加密后的文件称为明文 D.将明文变为密文的过程称为解密 )。

A。 【解析】一般人们将加密前的文件称为明文,而加密后的文件称为密文,因此加密的目的 就是将明文变为密文。而反过来将密文变为明文的过程则称为解密。 15.下列关于域名和 IP 地址的叙述中,不正确的是( A.在 Internet 中访问一台主机必须使用它的主机名 B.200.201.202.203 是一个 C 类 I P 地址 C.I P 地址采用的是分层结构 D.主机名与 I P 地址是一一对应的 )。

A。 【解析】每台直接连接到 Internet 上的计算机、路由器都必须有唯一的 IP 地址。IP 地 址是 Internet 赖以工作的基础。Internet 中的计算机与路由器的 IP 地址采用分层结构, 它是由网络地址与主机地址两部分组成。对于 C 类地址,其网络地址空间长度为 21 位,主 机地址空间长度为 8 位,C 类 I P 地址范围从:l92.0.0.0~223.255.255.255。主机 名与它的 IP 地址一一对应, 因此在 Internet 上访问一台主机既可以使用它的主机名, 也可 以使用它的 I P 地址。

16.Java 语言中。负责并发管理的机制是( A.垃圾回收 B.虚拟机 C.代码安全 D.多线程

)。

D。 【解析】多线程是 Java 程序的并发机制,它能同步共享数据、处理不同的事件。

17.下列描述中,错误的是( )。 A.Java 要求编程者管理内存 B.Java 的安全性体现在多个层次上 C.Applet 要求在支持 Java 的浏览器上运行 D.Java 有多线程机制 A。 【解析】为了充分利用资源,Java 有一个系统级的线程,用来对内存的使用进行跟踪, 它可以在系统空闲时对不用的内存空间进行回收, 从而使程序员从繁忙的内存管理中解放出 来。 18.Java 为移动设备提供的平台是( A.J2ME B.J2SE C.J2EE D.JDK 5.0 )。

A。 【解析】Java 2 平台包括:J2ME 平台、J2SE 平台和 J2EE 平台。其中:J2ME 是为嵌入式 和移动设备提供的 Java 平台;J2SE 是面向企业级应用与服务的综合性标准开发平台;J2EE 是面向大型企业级用容器管理专用构件的应用平台。而 JDK 5.0 是一个 Java 开发软件包。 19.JDK 中提供的文档生成器是( A.javadoc.exe B.javap.exe C.java.exe D.javaprof.exe )。

A。 【解析】在 JDK 中:javadoc.exe 是文档生成器,将 Java 源代码和包以 MML 格式生成 AP 文档;java.exe 是 Java 解释器;javap.exe 是 Java 反汇编器;javaprof.exe 是 Java 剖析工具,提供解释器剖析信息。 20.下列不属于 Swing 中构件的是( A.JPanel B.JTable C.Menu D.JFrame )。

C。 【解析]JPanel 是 Swing 的中间容器;JTable 是 Swing 中可编辑信息的构件;JFrame 是 Swing 的顶层容器。 21.阅读下面程序 importjava.io.*; public class TypeTransition{ public static void main(String args[]){ char a=’h’; int i=100 ;

int J=97; int aa=a+i; System.out.println("aa="+aa); char bb=(char)j; System.out.println("bb="+bb): } } 如果输出结果的第二行为 bb=a,那么第一行的输出结果是( A.aa=I B.aa=204 C.aa=v D.aa=156

)。

B。 【解析】本题考查的是 Java 的基本数据类型及其运算。程序开始生成了一个字符型变 量 a 和 3 个整型变量 i、j、aa。而整型变量 aa 的初始值是 a+i,其中 a 是一个字符 型变量。如何进行加法运算呢?Java 语言规定,char 型数据可以自动转换成 int 类型, 转换的结果就是该字符的 ASCIl 码值。因此,整型变量 aa 的初始值为字符”h”的 ASCIl 码值加上 l00。如果记住 h 的 ASCIl 码值是 104,则直接就确定 aa 的初始值是 204,选项 B 为正确答案。如果记不得 h 的 ASCIl 码,题目中则给出提示。题目中说”输出结果的第二行 为 bb=a”,也就是字符 bb 的值为字符 a,bb 的生成语句是 char bb=(char)j,是把整型变 量 j 的值强制转换为字符型。同样,把 ASCIl 码值为 j(97)所对应的字符赋值给 bb。显然, 字符 a 的 ASCIl 码值为 97, 字符 b 的 ASCIl 码值为 98, 依次类推, 字符 h 的 ASCIl 码为 l04。 因此,本题的正确答案是 B。

22.阅读下面程序 public class Operators And Expressions( void equals Methodl(){ Stringsl 一 new String("how are you"); Strings2=new String("how are you"); System.out.println(s1= =s2): } public static void main(String args[]){ Operators And Expressions Oper And Exp=new Operators And Expressions (); //用于复合类型数据的”= =”运算符 OperAndExp.equalsMethodl(); } } 程序运行结果是( )。 A.= = B.true C.false

D.equal C。 【解析】本题考查的是 Java 语言中运算符的特殊用法。相等比较运算符"= =",不仅可用 于基本类型的数据之间的比较,还可以用于复合类型数据之间的比较。但是,对于复合类型 数据的"= ="运算,其比较的目标是两个操作数是否是同一个对象。如果需要比较两个对象 的值是否相同,则可以调用 equals()方法。题目中函数 equalsMethodl()的代码非常简单, 首先生成两个字符串对象 sl 和 s2,然后输出表达式"sl= =s2"的结果。根据上面介绍的相 等比较运算符的用法,字符串对象 sl 和 s2 是复合类型数据,因此表达式"sl= =s2"比较的 是 sl 和 s2 是否同一个对象。显然,sl 和 s2 虽然具有相同的值,即"how are you",但它 们是两个不同的对象。因此,本题的正确答案是 C。

23.阅读下面代码 if(x= =0){System.out.println("冠军");) elseif(x>一 3){System.Out.println("亚军");} else{System.out.println("季军");} 若要求打印字符串”季军”,则变量 X 的取值范围是( A.x=d&x<=-3 B.x>O C.x>-3 D.x<=-3

)。

23.D。 【解析】本题考查的是条件分支语句 if-else。if-else 根据判定条件的真假来执行 两种操作中的一种。当条件为真时,执行 if 语句后面的代码块;当条件为假时,执行 else 后面的代码块。 题目中的代码段是一个 if-else 的嵌套语句, 根据 if-else 语句的执行过程 来进行分析。当 x 的值为 0 时,布尔表达式"x= =0"的结果为真,就输出”冠军”;当 x 的 值不为 0 时,则执行 else 语句中的内容。else 语句中的代码又是一个 if-else 语句,还是 和上面一样进行分析。当 X 的值不等于 0 且大于-3 时,布尔表达式”x>-3”的结果为真, 输出"亚军"; 当 x 的值不等于 0 且不大干-3, 也就是 X 的值不等于 0 同时 x 的值小于等于-3 时,则输出"季军"。经过上述分析可知,要想输出"季军",x 所满足的条件为 x!=O&x<=-3, 但是当 x<=-3 时,x 的值一定不会为 0。所以,X 所满足的条件可以简写为 x<=-3。因此,本 题的正确答案为 D。

24.下列关于构造方法的叙述中,错误的是( )。 A.Java 语言规定构造方法名与类名必须相同 B.Java 语言规定构造方法没有返回值,但不用 void 声明 C.Java 语言规定构造方法不可以重载 D.Java 语言规定构造方法只能通过 new 自动调用 C。 【解析】本题考查的是构造方法的使用。Java 语言中,构造方法是一种特殊的方法,是 为对象初始化操作编写的方法,用它来定义对象的初始状态。Java 中的每个类都有构造方 法,它也是由方法名、参数和方法体组成的。构造方法有如下特点: ·构造方法的名字必须与类名相同。

·构造方法不返回任何数据,但不用 void 来声明。 ·用户不能直接调用构造方法,必须通过关键字 new 自动调用。 ·构造方法可由用户在类中定义,默认时由 Java 语言自动生成。但它是个空方法,变 量被赋予该数据类型的默认值。 ·在构造方法实现中,可以进行方法重载,即定义多个构造方法。重载构造方法的目的 是使类具有不同的初始值,为类对象的初始化提供方便。根据上述构造方法的特点可知,本 题选项 C 的说法是错误的。 25.下列适配器类中不属于事件适配器的是( A.MouseAdapter B.KeyAdapter C.ComponentAdapter D.FrameAdapter )。

D。 【解析】本题考查 java.awt.event 包中定义的适配器类。该包中定义的适配器类包括 ①ComponentAdapter 构件适配器;②ContainerAdapter 容器适配器;③FocusAdapter 焦点 适配器;④MouseAdapter 鼠标适配器;⑤KeyAdapter 键盘适配器⑥WindowAdapter 窗口适 配器,由此可知本题答案为 D。 26.下列类中属于字节输入抽象类的是( A.FileInputStream B.ObjectInputStream C.FiterInputStream D.InputStream )。

D。 【解析】在 Java 中定义了两种类型的流,字节型和字符型,这两种流分别用 4 个抽 象类表示: InputStream, OutputStream, Reader, Writer, 其中 InptutStream 和 OutStream 表示字节流,Reader 和 Reader 是表示字符流,所以字节输入抽象类为 InptutStream。 27.能向内部直接写入数据的流是( A.FileOutputStream B.FileInputStream C.ByteArrayOutputStream D.ByteArraylnputStream )。

C。 【解析】本题考查 Java 的内存读写。在 java.io 中,还提供了 ByteArrayInputStream、 ByteArrayoutputStream 和 StringBufferInputStream 类 可 直 接 访 问 内 存 , 它 们 是 InputStream 和 OutputStream 的子类。 用 ByteArrayOutputStream 可向字节数组写入数据; ByteArrayInputStream 可从字节数组中读取数据。 28.下列运算符中属于关系运算符的是( A.= = B.= C.+ = )。

D.- = A。 【解析】本题考查 Java 的关系运算符。B 中写法不正确,C、D 均为赋值运算符。 29.下列方法中,声明抛出 InterruptedException 类型异常的方法是( A.suspend() B.resume() C.sleep() D.start() )。

C。 【解析】本题考查线程的基本操作。Java 中提供了 interrupt 方法用来中断一个线程, 当调用一个线程的 interrupt 方法时,即向该线程发送一个中断请求。在调用线程的 interrupt 方法时,如果该线程由于调用了 sleep 方法或 wait 方法而正在处于阻塞状态, 那么线程会抛出一个 InterruptException 异常。 30.下列关于 System 类的叙述中,错误的是( )。 A.System 类是一个 final 类 B.System 类不能实例化 C.System 类中没有定义属性 D.System 类主要提供了系统环境参数的访问 C。 【解析】本题考查 System 类的基本知识。Systern 类是一个 final 类,所有的方法都用 类变量来调用,对 System 类不可能实例化。System 类主要用来提供标准输入/输出和系统 环境信息的访问设置。而 System 类的属性有:①public static final InputStream in; 标 准 输 入 ; ②publicstatic final OutputStream out ; 标 准 输 出 ; ③pubhc static finalPrintStream err;标准错误输出。 31.阅读下面程序 public class Increment{ public static void main(stringargs[]){ int C; c=5: System.out.println(c); System.out.println(c++): System.out.println(c); } } 程序运行结果是( )。 A.5 6 6 B.5 5 6

C.6 7 7 D.6 6 6 B。 【解析】本题考查的是 Java 增量运算符"++"。 x++是先使用后加 l,即首先使用 X 的值 进行表达式的计算,然后才对 x 的值加 1。而++x 是先加 1 后使用,即首先对 x 的值加 1, 然后使用 x 的值进行表达式的计算。本题首先生成一个整型变量 C,其初始值为 5。第一条 输出语句输出 c 的初始值,即 5。然后,第二条输出表达式 c++的结果,即先输出 C 的值, 然后才对 c 的值加 1,所以,第二条输出语句输出的是 5,输出后 c 的结果才为 6。最后一 条输出语句输出结果为 6。因此,本题的正确答案为 B。 32.下列叙述中,错误的是( )。 A.JavaApplication 与 Applet 所用编译命令相同 B.通常情况下 JavaApplication 只能有一个 main()方法 C.JavaApplet 必须有 HTML 文件才能运行 D.JavaApplet 程序的.class 文件可用 Java 命令运行 D。 【解析】本题考查的是 Java 中的 Applet 以及 Applet 与 Application 的区别。Applet 是 能够嵌入 HTML 语言中,并能够在浏览器中运行的类。Applet 的运行环境是 Web 浏览器,所 以必须建立 HTML 文件,告诉浏览器如何加载与运行 Applet。因为 Applet 是不能直接通过 Java 命令行启动运行的。所以选项 D 的说法错误。 33.下列关于 Java 语言中线程的叙述中,正确的是( )。 A.线程由代码、数据、内核状态和一组寄存器组成 B.线程间的数据是不共享的 C.用户只能通过创建 Thread 类的实例或者定义和创建 Thread 子类的实例,建立和控 制自己的线程 D.因多线程并发执行而引起的执行顺序的不确定性可能造成执行结果的不确定 D。 【解析】本题考查线程的基本知识。线程与进程在概念上是相关的,线程是由表示程序运 行状态的寄存器、程序计数器、栈指针以及堆栈组成,它不包含进程地址空间中的代码和数 据。代码所操作的数据是 Java 线程模型中的一个组成部分,数据与代码是独立的。数 据可以被多个线程共享,也可不共享。Java 语言中提供两种创建线程的方法,一种是 通过继承 Thread 类创建线程,另一种是通过实现 Runnable 接口来创建线程。 34.处理对象传输的接口是( A.Serializable B.C:loneable C.hemListener D.ActionListener )。

A。 【解析】处理对象传输就是把对象串行化。Java 语言中,如果要串行化某些类的对象, 这些类就必须实现 Serializable 接口。 35.在读取二进制数据文件的记录时,为了提高效率常 常使用的一种辅助类是( )。 A.InputStream B.FileInputStream C.StringBuffer D.BufferedReader C。 【解析】本题考查 Java 语言的输入/输出流。InputStream 类、FilelnputStream 类和 BufferedReader 类都是 Java 语言中和输入输出直接相关的类,不属于辅助类,因此可以直 接判断出选项 C 为正确答案。 36.在 Applet 中显示文字、图形等信息时,应使用的方法是( A.init() B.start() C.paint() D.destroy() )。

C。 【解析】 paint()是与 Applet 显示相关的方法, 由它来具体执行 Applet 的绘制功能。 init() 方法用于初始化 Applet, start()方法用于激活 Applet。 在 init()方法完成后, 将调用 start() 方法,而且在 Applet 每次显示时都要调用。destroy()方法用于彻底终止 Applet。 37.关于线程的生命周期以下状态正确的是( )。 A.新建状态、可运行状态、阻塞状态、恢复状态和终止状态 B.新建状态、运行状态、阻塞状态、恢复状态和终止状态 C.新建状态、可运行状态、运行状态、阻塞状态和终止状态 D.新建状态、可运行状态、运行状态、恢复状态和终止状态 C。 【解析】线程生命周期中出现的状态包括:新建状态、可运行状态、运行状态、阻塞状态 和终止状态。 38.Thread 类中能运行线程的方法是( A.resume() B.start() C.run() D.init() )。

C。 【解析】resume()是 Thread 类提供的用于线程控制的方法;start()是 Thread 类中的方 法,新建的线程不会自动运行,必须调用线程的 start() 方法才能运行该线程; run() 是 Thread 类中的方法, 在该方法中定义了线程的具体行为, 线程开始执行时, 就是从它的 run() 方法开始执行的,就像 Java 应用程序从 main()开始、Applet 从 ink()开始一样;init()不 是 Thread 类中的方法。

39.以下不是 APPLET 标记的选项是( A.PARAM B.BODY C.CODEBASE D.ALT B。 【解析】标记的一般格式是:

)。

[CODEBASE=codebaseURL] CODE=appletFile [ALT=alternateText] [NAME=appletlnstanceName] WIDTH=pixels HEIGHT=pixels [ALIGN=alignment] [VSPACE=pixels] [HSPACE=pixels] [ARCHIVE=archiveFiles] > [ ue>] [ ue>] [alternateHTML] 因此可以看出,选项 B 不是 APPLET 标记。 40.在 Java 中,与数据库连接的技术是( A.开放数据库连接 B.Java 数据库连接 C.数据库厂家驱动程序 D.数据库厂家的连接协议 )。

B。 【解析】开放数据库连接(ODBC,Open Datebase Connectivity),它是用 C 语言定义的。 由于 J2EE 要求与 Java 绑定,因此规定使用 Java 数据库连接 (JDBC , Java DataBase Connectivity),作为 Java 与数据库连接的技术。 二、基本操作题(共 18 分) 本题定义了一个求两个数的最大值的方法 max,并调用该方法计算 67 和 23 的最大值。 public class javal{ public static void main(String[]args){ javal temp=new javal(); int res=max(67,23);

System.out.println("res="+res); } static int maX( ){ int maxNum; if(a>b) ; else maxNum=b; ; } } 第 1 处:int a,int b 第 2 处:maxNum=a 第 3 处:return maxNum 【解析】 第 1 处定义 max()方法中的两个整型形参; 第 2 处将两者中较大的赋给 maxNum; 第 3 处返回最大值。

三、简单应用题(共 24 分) 本题的功能是对下拉菜单项的操作,包括添加和删除。页面包括一个下拉菜单、一个文 本框和两个按钮“删除”和“添加”, 选中下拉菜单的一项后, 可以通过“删除”按钮从下 拉菜单中删除该项, 在文本框中填入字符串后, 单击“添加”按钮就可以将该项添加到下拉 菜单中,所有信息都将显示在右侧的文本域中。 import java.awt.*; import java.awt.event.*; public class java2 extends java.applet.Applet implements hemListener,ActionListener {Choice choice; TextField text; TextArea area; Button add,del; public void init() . {choice:new Choice(); text=new TextField(8); area:new TextArea(6,15); choice.add("音乐天地"); choice.add("武术天地"); choice.add("象棋乐园"); choice.add("交友聊天"); add=new Button("添加"); del=new Button("删除"); add.addActionListener(this); del.addActionListener(this);

choice.addItemListener(this); add(choice); add(del);add(text);add(add);add(area); } public void itemStateChanged(hemEvent e) {String name= ; int index=choice.getSelectedIndex(); area.setText("\n"+index+":"+name); } public void actionPerformed(ActionEvent e) {if(e.getSource()= =add||e.getSource()= = text) {String name=text.getText(); if(name.length()>0) {choice.add(name); choice.select(name); area.append("\n 添加"+name); } } else if(e.getSource()= =del) {choice.remove( ); area.append("\n 删除"+choice.getSelectedItem ()); } } } 第 1 处:choice.getSelectedltem() 第 2 处:choice.getSelectedIndex() 【解析】第 1 处是获取当前选中项的数据;第 2 处清除选中项的索引号。 四、综合应用题(共 18 分) 本题的功能是定义自已的组件类。窗口中排布着 12 个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单击 按钮时,后台将显示该按钮对应的字符。 import java.awt.*; import java.awt.event.*; import java.util.*; class java3 extends Frame{ String keys="l23456789*0#"; java3(){ super("java3"); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){

System.exit(O); } }); setLayout(new GridLayout(4,3,6,6)); for(int i=0;i KeyButton kb=new KeyButton(keys.charAt (i)); kb.addkeyListener(this); kb.setBackground(Color.pink); kb.setForeground(Color.black); add(kb); } setSize(200,200); show(); } class KeyEventHandler extends KeyAdapter{ public void keyTyPed(KeyEvent evt){ System.out.println(evt.getChar()); } } public static void main(String[]args){ newjava3(); } } class KeyButton extends Component{ KeyListener keyListener; boolean highlighted; char key; KeyButton(char k){ this.key=k; addMouseListener(new MouseEventHandler()): } public void paint(Graphics g){ int W=getSize().width; int h=getSize().height; String s=""+key; FontMetrics fm=g.getFontMetrics(); if(highlighted){ g.setColor(getBackground()); g.fillRoundRect(0,0,w-1,h-1,10,10); } g.setColor(getForeground()); g.drawRoundRect(0,0,w-1,h-1,10,10); g.drawString(s,(w-fm.stringWidth(s))/2,

(h-fm.getHeight())/2+fm.getAscent()); } class MouseEventHandler extends MouseAdapter{ public void mousePressed(MouseEvent evt){ if(keyListener!=null){ keyListener.keyTyped( new KeyEvent(KeyButton.this,KeyEvent.KEY_ TYPED, System.currentTimeMillis(), 0,KeyEvent.VK_UNDEFINED,key)); } } public void mouseEntered(MouseEvent evt){ highlighted=true; repaint(); } public void mouseExited(MouseEvent evt){ highlighted=false; repaint(); } } public synchronized void addKeyListerner(KeyListener l){ keyListener=AWTEventMuhieaster.add(keyListener,1); } public synchronized void removeKeyListener(KeyListener l){ keyListener=AWTEventMuhicaster.remove (keyListener,1); } } 第 1 处:int i=0;i 第 2 处:kb.addKeyListener(new KeyEventHandler()) 第 3 处:system.out.println(evt.getKeyChar()) 【解析】第 1 处是作为遍历 keys 中元素的条件,而 keys 中的字符元素就是各个按钮对 应的字符。第 2 处注册键盘事件监听功能,KeyButton 实现了 KeyLIstener 接口,而 kb 是 KeyButton 类的对象,所以它是合格的监听者。第 3 处将从键盘读到的字符输出。


相关文章:
全国计算机等级考试二级Java语言程序设计试题及答案(一).doc
全国计算机等级考试二级Java语言程序设计试题及答案(一) - 苦墨彬肤诬新剔硒
全国计算机等级考试二级Java语言程序设计试题及答案(一....doc
全国计算机等级考试二级Java语言程序设计试题及答案(一)概述 - 一、选择题(
全国计算机等级考试二级Java语言程序设计试题及答案(一).doc
全国计算机等级考试二级Java语言程序设计试题及答案(一)_IT认证_资格考试/
历年全国计算机等级考试二级Java语言程序设计试题及答案.doc
历年全国计算机等级考试二级 Java 语言程序设计试题及答案 一、选择题(每小题1分,共40小题,共40分) 1.下列叙述中正确的是( )。 A.一个算法的空间复杂度大,...
全国计算机等级考试二级Java语言程序设计试题及答案(二....doc
全国计算机等级考试二级Java语言程序设计试题及答案(二)概要 - 一、选择题(每小题1分,共40小题,共40分) 1.下列叙述中正确的是( )。 A.对长度为 n 的有...
全国计算机等级考试二级Java语言程序设计试题及答案(二).doc
全国计算机等级考试二级Java语言程序设计试题及答案(二)_IT认证_资格考试/
历年全国计算机等级考试二级Java语言程序设计试题及答....doc
历年全国计算机等级考试二级Java语言程序设计试题及答案分解 - 历年全国计算机等级考试二级 Java 语言程序设计试题及答案 一、选择题(每小题1分,共40小题,共40分)...
全国计算机等级考试二级JAVA语言程序设计试题及答案(五).txt
全国计算机等级考试二级JAVA语言程序设计试题及答案(五) - 一、选择题(每小题1分,共40小题,共40分) 1.常采用的两种存储结构是( )。 A.顺序存储结构和链式...
全国计算机等级考试二级JAVA语言程序设计试题及答案(五)_..doc
全国计算机等级考试二级JAVA语言程序设计试题及答案(五)_. - 一、选择题(
全国计算机等级考试二级Java语言程序设计试题及答案(八).doc
全国计算机等级考试二级Java语言程序设计试题及答案(八)_IT认证_资格考试/
全国计算机等级考试二级Java语言程序设计试题及答案(六).doc
全国计算机等级考试二级Java语言程序设计试题及答案(六)_IT认证_资格考试/
2014年全国计算机等级考试二级 Java语言程序设计 考前....doc
2014年全国计算机等级考试二级 Java语言程序设计 考前冲刺试卷及答案_IT认证_资格考试/认证_教育专区。2014年全国计算机等级考试二级 Java语言程序设计 考前冲刺试卷及...
全国计算机等级考试二级Java语言程序设计试题及答案(一....doc
全国计算机等级考试二级Java语言程序设计试题及答案(一)概述 - ===精选公
2014年全国计算机等级考试二级 Java语言程序设计 绝密....doc
2014年全国计算机等级考试二级 Java语言程序设计 绝密押题及答案_IT认证_资格考试...一、选择题(每小题 1 分,共 40 小题,共 40 分) 1.线性表 L=(al,a2...
2014年全国计算机等级考试二级 Java语言程序设计 模拟....doc
2014年全国计算机等级考试二级Java 语言程序设计》模拟试题及答案 2014年全国计算机等级考试二级Java 语言程序设计》模拟试题及答案 根据2013年版考试大纲编制 ...
全国计算机等级考试二级笔试样卷Java语言程序设计解析.doc
全国计算机等级考试二级笔试样卷Java语言程序设计解析 - 全国计算机等级考试二级笔试样卷 Java 语言程序设计 选择题((1~(35 每小题 2 分,共 70 分 下列各题 A...
全国计算机等级考试二级Java模拟试卷及答案.doc
全国计算机等级考试二级Java模拟试卷及答案 - 全国计算机等级考试二级 Java 模拟试卷及答案 Java 语言程序设计 一、选择题 (1)Java 语言具有许多优点和特点,下列选项...
历年全国计算机等级考试二级Java语言程序设计试题及答案.doc
历年全国计算机等级考试二级Java语言程序设计试题及答案 - 历年全国计算机等级考试二级 Java 语言程序设计试题及答案 一、选择题(每小题 1 分,共 40 小题,共 40...
历年全国计算机等级考试二级Java语言程序设计试题及答案.pdf
历年全国计算机等级考试二级Java语言程序设计试题及答案 - 历年全国计算机等级
2011年3月全国计算机等级考试二级java试题及参考答案.doc
2011年3月全国计算机等级考试二级java试题及参考答案 - 机密★启用前 2011 年 3 月全国计算机等级考试二级笔试试卷 Java 语言程序设计 (考试时间 90 分钟,满分 ...