《Java 程序设计》习题答案 下载本文

终止或暂停。

设定线程的优先级:使用Thread对象的setPriority( int priority)方法。

3.多线程之间怎样进行同步?

答:可以通过使用关键字synchronized,使用对象的wait()、notify()方法来实现线程间的同步。

4.编写一个程序,用一个线程显示时间,一个线程用来计算(如判断一个大数是否是质数),当质数计算完毕后,停止时间的显示。

答:见程序。

第9章 流、文件及基于文本的应用

习 题

1.字节流与字符流有什么差别?

答:按处理数据的类型,流可以分为字节流与字符流,它们处理的信息的基本单位分别是字节(byte)与字符(char)。

2.节点流与处理流有什么差别?

答:节点流(Node Stream): 直接与特定的地方(如磁盘、内存、设备等)相连,可以从/向一个特定的地方(节点)读写数据。如文件流FileReader。

处理流(Processing Stream): 是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读/写功能。处理流又称为过滤流。如缓冲处理流BufferedReader。

3.输入流与输出流各有什么方法?

答:输入流InputStream类最重要的方法是读数据的read()方法。read()方法功能是逐字节地二进制的原始方式读入数据。另外,它还有skip(long n)、reset()、available()、close()方法等。

输出流OutputStream类的重要方法是write(),它的功能是将字节写入流中。另外,它还有flush()及close()方法。

4.怎样进行文件及目录的管理?

答:Java支持文件管理和目录管理,它们都是由专门的java.io.File类来实现。每个File类的对象表示一个磁盘文件或目录,其对象属性中包含了文件或目录的相 关信息,如名称、长度、所含文件个数等,调用它的方法则可以完成对文件或目录的常用管 理操作,如创建、删除等。

5.编写一个程序,从命令上行接收两个实数,计算其乘积。 答:参见程序。

9-17

6.编写一个程序,从命令行上接收两个文件名,比较两个文件的长度及内容。 答:参见程序。

7.编写一个程序,能将一个Java源程序中的空行及注释去掉。 答:参见程序。

第10章 图形用户界面

习 题

1.试列举出图形用户界面中你使用过的组件。 答:常用的容器组件如:边框窗体(Frame)、对话框(Dialog)、面板(Panel)、及滚动面板(ScrollPane)等。常用的非容器组件,如按钮(Button),标签(Label),文本类组件(TextField及TextArea),复选按钮(Checkbox),单选按钮组(CheckboxGroup),Choice(下拉列表),List(列表),滚动条(Scrollbar),画布(Canvas)等。

2.Java中常用的布局管理各有什么特点?

答:常用的布局管理有5种,即FlowLayout,BorderLayout,CardLayout,GridLayout和GridBagLayout,它们的特点如下:

FlowLayout是容器Panel和它的子类Applet缺省使用的布局管理器,它将将其中的组件按照加入 的先后顺序从左向右排列,一行排满之后就下转到下一行继续。

BorderLayout是容器Frame和Dialog缺省使用的布局管理器,它把容器内的空间简单地划分为东、西、南、北、中五个区域。

CardLayout的容器表面上可以容纳多个组件,但是实际上同一时刻容器只能从这些组件中选出一个来显示,就像一叠“扑克牌”每次只能显示最上面的一张一样,这个被显示的组件将占据所有的容器空间。

GridLayout是使用较多的布局管理器,其基本布局策略是把容器的空间划分成若干 行乘若干列的网格区域,组件就位于这些划分出来的小格中。

在GridBagLayout中,可以为每个组件指定其包含的网格个数,可以保留组件原来的大小,可以以任意顺序随意加入容器的任意位置,从而可以真正自由地安排容器中每个组件的大小和位置。

3.简述Java的事件处理机制。

答:在Java中通过实现事件监听器(Eventistener)来实现对事件的处理。事件监听器是一些事件的接口,这些接口是 java.awt.AWTEventListener的子类。接口中含有相关的方法,每个方法中可以编程来处理相关的事件。

每个界面对象在需要处理某种事件时,先进行事件的注册。注册的过程就是将界面对象与事件监听器联系在一起的过程。

4.什么是事件源?什么是监听者?

答:事件源是指发出事件的界面对象。监听者是指处理这些事件的对象,它实现了一

10-18

些相关事件处理方法的接口,在一定意义上监听者是具体处理这些事件的程序。

5.列举java.awt.event包中定义的事件类,并写出它们的继承关系。

答:在java.awt.event包中有一系列的事件类,如KeyEvent及MouseEvent等。这些事件类都是从AWTEvent类派生而来的。事件类之间的继承关系如下图所示。

6.列举GUI的各种标准组件和它们之间的层次继承关系。

答:组件(Component)分为容器(Container)类和非容器类组件两大类。容器本身也是组件,但容器中可以包含其他组件,也可以包含其他容器。非容器类组件的种类较多,如按钮(Button),标签(Label),文本类组件TextComponent等等。

容器又分为两种顶层容器和非顶层容器两大类。顶层容器是可以独立的窗口,顶层容器的类是Window,Window的重要子类是Frame和Dialog。非顶层容器,不是独立的窗口,它们必须位于窗口之内,非顶层容器包括Panel及ScrollPane等, Panel的重要子类是Applet。其中,Panel和Applet的容器都是无边框的;ScrollPanel一组是可以自动处理滚动操作的容器;Window,Frame,Dialog和FileDialog是一组大都含有边框,并可以移动、放大、缩小、关闭的功能较强的容器。

AWT组件的分类如下图所示:

Label, TextComponent,......?Button,? ??Frame?ComponentWindow?????Dialog?Container?Panel,ScrollPane?,.......??组件间的继承关系,如下图所示:

7.Component类有何特殊之处?其中定义了哪些常用方法? 答:Component类是所有组件和容器的抽象父类,其中定义了一些每个容器和组件都可能用到的方法,较常用的有:

(1)public void add(PopupMenu popup):在组件上加入一个弹出菜单,当用户用鼠标右键单击组件时将弹出这个菜单。

10-19

(2)public Color getBackground():获得组件的背景色。 (3)public Font getFont():获得组件使用的字体。

(4)public Color getForeground():获得组件的前景色。

(5)public Graphics getGraphics():获得在组件上绘图时需要使用的Graphics对象。 (6)public void repaint(int x,int y,int width,int height):以指定的坐标点(x,y)为左上角,重画组件中指定宽度(width)、指定高度(height)的区域。

(7)public void setBackground(Color c):设置组件的背景色。

(8)public voidsetEnabled(boolean b):设置组件的使能状态。参数b为真则组件使能,否则组件不使能。只有使能状态的组件才能接受用户输入并引发事件。

(9)public void setFont(Font f):设置组件使用的字体。

(10)public void setSize(int width,int height):设置组件的大小。

(11)public void setVisible(boolean b):设置组件是否可见的属性。参数b为真时,组件在包括它的容器可见时也可见;否则组件不可见。

(12)public void setForeground(Color c):设置组件的前景色。 (13)public void requestFocus():使组件获得注意的焦点。

8.将各种常用组件的创建语句、常用方法、可能引发的事件、需要注册的监听者和监听者需要重载的方法综合在一张表格中画出。

答:常用的组件与事件的关系如下表所示: 组 件 Button Canvas Checkbox CheckboxMenuItem Choice Component Comtainer Dialog Frame Label List MenuItem Panel Scrollbar ScrollPane TextArea TextField Window 注: Act: Adj: Cmp: Cnt:

Action 行动事件 Adjustment调整 Component组件事件 Container容器事件

Act Y Y Y Y Adj Y Cmp Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Cnt Y Y Y Y Y Y Foc Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Itm Y Y Y Y Key Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Mou Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y MM Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Txt Y Y Win Y Y Y 10-20