JAVA第八章

合集下载

Java语言程序设计第8章习题参考答案.docx

Java语言程序设计第8章习题参考答案.docx

习题八参考答案1.什么是组件?什么是容器?并说明各自的作用。

答:从实现角度来看,组件(Component)是构成GUI的基本要素,作用是通过对不同事件的响应来完成和用户的交互或组件之间的交互;容器是能容纳和排列组件的对象,如Applet> Panel (面板)、Frame (窗口)等,作用就是放置组件并控制组件位置。

2.简述Swing组件的优点。

答:Swing是在AWT基础上扩展而来的,提供了非常丰富的组件,远远多于AWT,并且引入了新的概念和性能,这使得基于Swing开发GUI应用程序比直接使用AWT开发更为灵活、方便、效率高,而且能设计出更优美的、感受更好的GUI。

3.简述容器的概念,结合8.4.7小节的内容,解释什么是应用程序的主框架?答:容器是用来容纳其他组件和容器的特殊组件,是由容器类(Container类)创建的对象。

在Java语言中,容器类是组件类(组件类Component类)的一个子类,具有组件的所有性质。

在AWT 技术中,容器类由java. awt包提供,主要包括面板类Panel、窗口类Window、结构类Frame、对话框类Dialog等。

在Swing技术中,容器类由javax. swing包提供,并可分为如下三类:>顶层容器:JFramc. JApplet. JDialog、JWindow;>中间容器:JPanel、JScrollPane^ JSplitPane、JDesktopPaneJToolBar;特殊容器:在GUI上起特殊作用的中间层,如J Interna IFrame、JLayeredPane、 JRootPaneo 应用程序的主框架由可以容纳应用程序各种组件的顶层容器创建,除了负责组件的管理外,通常还提供最大化、最小化、关闭按钮等,实现应用程序展现方式以及关闭等。

4.总结JFrame的使用要点,并说明内容面板的作用。

答:JFrame类包含很多设置窗体的方法,可以用setTitle(String tille)方法设置窗体标题,用setBounds(inl x,int y,int width,int height)方法设置窗体显示的位置及大小,用setVisable (Boolean b)方法设置可见与否(默认不可见)。

Java语言程序设计(郑莉)第八章课后习题答案

Java语言程序设计(郑莉)第八章课后习题答案

Java语言程序设计(郑莉)第八章课后习题答案1.进程和线程有何区别,Java是如何实现多线程的。

答:区别:一个程序至少有一个进程,一个进程至少有一个线程;线程的划分尺度小于进程;进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

Java程序一般是继承Thread类或者实现Runnable接口,从而实现多线程。

2.简述线程的生命周期,重点注意线程阻塞的几种情况,以及如何重回就绪状态。

答:线程的声明周期:新建-就绪-(阻塞)-运行--死亡线程阻塞的情况:休眠、进入对象wait池等待、进入对象lock池等待;休眠时间到回到就绪状态;在wait池中获得notify()进入lock池,然后获得锁棋标进入就绪状态。

3.随便选择两个城市作为预选旅游目标。

实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000毫秒以内),哪个先显示完毕,就决定去哪个城市。

分别用Runnable接口和Thread类实现。

(注:两个类,相同一个测试类)//Runnable接口实现的线程runable类publicclarunnableimplementRunnable{privateStringcity;publicr unnable(){}publicrunnable(Stringcity){thi.city=city;}publicvoidrun(){for(inti=0;i<10;i++){Sytem.out.println(city);try{//休眠1000毫秒。

Thread.leep(1000);}catch(InterruptedE某ceptione){e.printStackTrace();}}}}//Thread类实现的线程thread类publicclarunnablee某tendThread{privateStringcity;publicrunnable(){}publicrunnable(Stringcity){thi.city=city;}publicvoidrun(){for(inti=0;i<10;i++){Sytem.out.println(city);try{//休眠1000毫秒。

第八章输入输出处理输入输出处理是...

第八章输入输出处理输入输出处理是...

第八章输入/输出处理输入/输出处理是程序设计中非常重要的一部分,比如从键盘读取数据、从文件中读取数据或向文件中写数据等等,而键盘、监视器、磁盘存储设备都称为输入、输出源。

Java把这些不同类型的输入、输出源抽象为流(stream)。

Java程序可以用输入流从一些输入源读数据,用输出流向一些输出源写数据。

Jdk 提供了包java.io,其中包括一系列的类来实现输入/输出处理。

从jdk1.1开始,java.io包中的流包括字节流和字符流。

§8.1输入/输出字节流概述§8.1.1 I/O字节流的层次结构在java中,所有的输入流都是从抽象类InputStream继承而来,所有的输出流都是从OutputStream 继承而来。

以下给出了java语言IO包中输入/输出处理类之间的继承关系。

输入、输出字节流的类层次一、简单的输入、输出流1.FileInputStream和FileOutputStream:用于本地文件系统的文件读写。

2.PipedInputStream和PipedOutputStream:用于完成管道的输入和输出。

管道用于将一个程序(或线程或代码块)的输出引导进另一个程序(或线程或代码块)的输入,所有PipedInputStream必须连接到一个PipedOutputStream所有PipedOutputStream必须连接到一个PipedInputStream。

3.ByteArrayInputStream和ByteArrayOutputStream:读写内存数据。

4.SequenceInputStream:用于将多个输入流连接到一个输出流。

5.StringBufferInputStream:用于读取StringBuffer类可变字符串中的数据。

二、过滤流1.DataInputStream和DataOutputStream:用一种与机器无关的格式读写java语言的基本数据类型。

第8章 Java Applet编程

第8章  Java Applet编程

8.5 小

• 本章中,对Applet的基础知识,工作原理、生命 周期,以及Applet的部署和基本事件的处理,还 有向Applet传递参数等等作了详细介绍。总的来 说,基于Applet的应用有很多,由于篇幅关系, 这里不再详细介绍,留待读者进一步在实践中去 探索。
8.1.1 Applet的特点
• • • • 应用小程序Applet能够完成以下的工作: (1)Applet能够播放声音; (2)Applet运行在Web浏览器中,它提高了HTML文档的交互性; (3)Applet能够调用在同一页中其他应用小程序的公共(Public) 函数; • (4)Applet可以从本地文件系统中装载(用户在CLASSPATH中定 义的路径),那么从网络装载时所产生的约束将不再适用于这个 Applet; • (5)虽然一旦离开Applet所在的页,大多数Applet将停止运行, 但是这并不是绝对的,通常,大部分Applet具有良好的行为,后 面介绍的stop()函数,目的就在于在编程者离开其所在页时停止 进程的运行,但是,有时候希望让Applet继续运行,例如用户让 Applet执行一个复杂的运算,那么当离开其所在的页时,编程者 希望这个运算能继续进行下去。
第8章 Java Applet编程
• 在这一章中,将介绍Applet网页小应用程序。 Applet网页小应用程序是个面向网络的程序。可 以用来让程序员创建应用程序,并放置在网络服 务器上,而用户可以通过网络下载这些应用程序, 并利用浏览器安全地运行。
8.1 Applet基础知识
• Java Applet小应用程序是一种特殊的Java程序。 这种小程序运行在支持Java的浏览器上,同时也 可以使用JDK所带的appletviewer命令来测试。要 让小程序运行,需要将已经编译好的字节码文件 (.class文件),用特殊标记嵌入到HTML语言编 写的Web页面中。这样,当打开Web页面时,浏览 器会使用内置的Java解释器来运行小程序。

Java程序设计精编教程5-8章知识点

Java程序设计精编教程5-8章知识点

b) 如果变量名由多个单词组成,从第 2 个单词开始的每个单词的首字母要大写。
方法
方法的定义包括两部分:方法声明和方法体。一般格式为:
方法声明部分 {
方法体的内容
}
方法声明
方法声明包括返回值类型、方法名和参数。
double getArea() { //返回值类型为 double,无参数。

}
方法的返回值类型可以是 Java 中的任意数据类型。如果一个方法不返回数据,返回值类型必须是 void。
2. 有一个类 Singleton,为该类设计单例模式(该类只能有一个实例,且不能在类的外部 new 对象),只能通过该类 的静态方法 getInstance()获取该类的唯一对象。在主类 Homework2 中测试单例模式的有效性。
b) 在实例方法中,不仅可以调用实例方法,也可以调用类方法。 2) 类名调用类方法
a) 在类方法中,只能调用类方法、操作类变量。 b) 也可以通过对象调用类方法。 c) 如果一个方法不需要操作实例变量就可以实现某种功能,可以考虑将其声明为类方法。(例 5-8) 5.7 方法重载与多态 Java 中有两种多态:重载(overload)和重写(override)。 方法重载(overload):一个类中可以有多个名字相同的方法,但这些方法的参数必须不同,或者参数的个数不同, 或者参数的类型不同。方法的返回值类型与重载无关。
5.8 this 关键字 this 只能出现在实例方法和构造方法(也属于实例方法)中,表示调用该方法的当前对象。 一般情况下,方法中 this.实例变量的 this 可省略、类名.类变量的类名可省略,但当局部变量与成员变量同名时,
this 或类名不能省略。 5.9 包
包是 Java 语言管理类的一种机制,类似于操作系统中的目录,使用包名可以有效区分名字相同的类。 包语句

8第八章GUI

8第八章GUI
6、能独立完成基本GUI界面的设计及简单事件的处理。
《JAVA程序设计》课程
8.1组件
8.1.1 项目(8-1)描述 请设计出如下登录窗口,如图8-1所示。
图8-1 登录窗口
《JAVA程序设计》课程
8.1组件
8.1.2 项目知识准备 (1)AWT 图形用户界面(Graphics User Interface,GUI)就是为应用程序提供一个图形化界面,方便用户和用户程序实 现友好交互的一个桥梁。常用的GUI图形界面开发工具分为以下两种: AWT(Abstract Window ToolKit,抽象窗口工具包)。AWT依赖具体的平台来构件图形用户界面的外观,所以使 用AWT编制的程序中在不同的平台上运行,会出现不同的运行效果。AWT工具包javax.awt,包括对话框,按钮, 复选框,列表,菜单,滚动条和文本域,高级窗口,可视控件如文本框和下压按钮,以及在屏幕上绘制图象的 简单元素有相似的功能。组件类,是所有图形界面元素的超类。图8-1表示组件的分层结构.
《Java 程序设计》课程 第八章 GUI
主讲人: 谢先伟
2017年3月
Java程序设计
汇报提纲
1、GUI顶层容器 2、GUI常用组件 3、GUI常用布局 4、GUI事件处理模型、监听机制和常用事件
《JAVA程序设计》课程
学习目标
1、了解AWT、Swing包的相关概念; 2、理解组件的概念,掌握对常用组件的使用; 3、理解容器的概念,掌握对常用容器的使用; 4、理解组建布局管理的概念,掌握对常用布局的使用 5、理解事件处理过程,掌握对事件处理过程的使用;
《JAVA程序设计》课程
8.1组件
表8-2 JFrame的方法及方法说明
方法
方法说明

java08(第8章输入输出流)

java08(第8章输入输出流)

在java.io包中定义了很多这二个基本类具体实现 包中定义了很多这二个基本类具体实现 输入输出功能的子类, 输入输出功能的子类,表8.1为部分常用字节输入 为部分常用字节输入 流类和字节输出流子类的功能。 流类和字节输出流子类的功能。
表8.1
类 名 FileInputStream 和 FileOutputStream ByteArrayInputStream和 ByteArrayOutputStream ObjectInputStream 和 ObjectOutputStream FilterInputStream 和 FilterOutputStream DataInputStream 和 DataOutputStream BufferedInputStream 和 BufferedOutputStream
【例8-1 】
1. /* 读取文件 */ 2. import java.io.FileInputStream; 3. import javax.swing.JOptionPane; 4. class Example8_1 5. { public static void main( String args[ ]) 6. { byte buffer[ ] = new byte[2056]; 7. String str; 8. try{ 9. File file=new File("d:/jtest/test.dat"); 10. FileInputStream fileInput = new FileInputStream(file); 11. int bytes = fileInput.read( buffer, 0, 2056 ); //读到的字节数 读到的字节数 12. str = new String( buffer, 0, bytes ); 13. } 14. catch(Exception e) 15. { 16. str= e.toString(); 17. } 18. JOptionPane.showMessageDialog(null,str); 19. System.exit(0); //退出程序 退出程序 20. } 21. }

Java程序设计:第八章 Swing图形界面程序设计

Java程序设计:第八章 Swing图形界面程序设计

原型 public FlowLayout(int align )
描述
FlowLayerout布局时,组件在容器以从左到右,从 上到下的方式排列。 align用于指定行对齐方式, FlowLayout.LEFT表示左 对齐,相应的有右对齐和居中对齐。
java.awt.Container的成员JLabel(2)
JFrame的成员方法
原型
public JFrame( ) public JFrame(String title) public void setDefaultCloseOperation( int operation) public void setSize(int width, int height) public void setVisible(boolean b) public Container getContentPane()
描述 构造一个无标题不可见的框架 构造一个标题为title的框架 设置当关闭框架时的操作,例如operation为 JFrame.EXIT_ON_CLOSE时表示退出程序
设置框架的大小
设置框架是否可见 返回当前框架的内容窗格
7
组件和容器 -JFrame和JLabel(3)
FlowLayout布局的成员方法:
4
组件和容器(3)
一般容器包括: 面板JPanel,滚动窗格JScrollPane,选项卡 窗格JTabbedPane和工具栏JToolBar。
专用容器包括:内部框架(JInternalFrame),分层窗格 (JLayedPane)、根窗格(JRootPane)、玻璃窗格(GlassPane )、内 容窗格(ContentPane)。
描述 构造一个父窗口为owner,标题为title,模式为 modal的对话框。Modal为true表示有模式,为false 表示无模式 设置对话框的大小
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

非静态内部类
• class A {

private int s;

public class B{

public void mb() {

s = 100;

System.out.println("在内部类B中s=" + s);

}

}

public void ma() {

B i = new B();
}
非静态内部类
• class A{

private int s = 111;

public class B {

private int s = 222;

public void mb(int s) {

System.out.println(s); // 局部变量s

System.out.println(this.s); // 内部类对象的属性s

System.out.println("Outerm()"+localvar1);

//System.out.println("localvar2"+localvar2);

return localvar1;

}

}

Inner inner=new Inner();

inner.innerm();

System.out.println(A.this.s);// 外层类对象属性s ,

通过A.this即可访问A类对象

}

}
•}
• public class TestInner3{

public static void main(String args[]){

A a = new A();

A.B b = a.new B();

b.mb(333);

}
•}
方法中的内部类
• 1.方法中的内部类作用范围只在方法中; • 2.外部实际是访问不到的,也不能声明为static; • 3.外部要用时,只能调用该方法,在方法中使用; • 4.内部类可以直接访问外部类成员。 • 5.可以直接访问方法中的常量,方法中的变量禁止访

方法中的内部类

ta.test(new Swimmer(){

public void swim(){

System.out.println("I'swimming!");

b.mb();

}
•}
非静态内部类
• class Outer{ int a; class Inner { int a; public void fun1() { a++; int b = Outer.this.a; System.out.println(a); } } public void fun() { Inner i = new Inner(); i.fun1(); } public static void main(String[] args) { Outer o = new Outer(); Outer.Inner i = o.new Inner(); i.fun1(); }

i.mb();

}
•}
• public class TestInner {

public static void main(String args[]){

A o = new A();

o.ma();

}
•}
非静态内部类
• public class A {

private int s;

public class B {
第8章 应知类
• 了解内部类的使用; • 掌握Object类中常用的几种方法,并能覆盖
它们; • 熟练使用封装类和Math类中的常用方法。
内部类优点
• ⒈ 内部类对象可以访问创建它的对象的实现,包 括私有数据;
• ⒉ 内部类不为同一包的其他类所见,具有很好的 封装性;
• ⒊ 使用内部类可以很方便的编写事件驱动程序;

public void mb() {

System.out.println(s);

}


}
•}
• public class TestInner2 {

public static void main(String[] args) {

A a = new A();

// 创建一个依赖于a而存在的b

A.B b = a.new B();
• ⒋ 匿名内部类可以方便的定义运行时回调;
8.1 内部类
• 1.内部类可以用protected、private修饰; • 2.不管非静态内部类还是静态内部类,都作为外部
类的一个成员来对待,与类的非静态成员和静态成 员的使用方法基本相同; • 3.非静态内部类中不允许有静态的成员; • 4.创建非静态内部类对象: Outer o = new outer(); Outer.Inner i = o.new Inner(); • 5.创建静态内部类对象: Outer.Inner i = new Outer.Inner(); • 6.内部类访问外部类同名成员时用Outer.this访问。
(){ • });
匿名内部类
• public interface Swimmer{

public abstract void swim();
•}
• public class TestAnonymous2{

public static void main(String args[]){

TestAnonymous2 ta = new TestAnonymous2();

}

public static void main(String[] args)

{

Outer2 outer =new Outer2();

outer.outerm();

}
•}
匿名内部类
• 1.匿名内部类多用于事件监听中。 • 2.如果new一个对象的小括号后跟一个大括
号,那么它正在定义的就是匿名内部类。 • 例如: • b.addActionListener(new ActionLiatener
• public class Outer2
•{

private int size;

public void outerm(){

final int localvar1=2;

int localvar2=3;

class Inner{

int innerm(){

size=9;

System.out.println("Outer="+size);
相关文档
最新文档