java实验指导(8)

2019-08-03 12:18

JAVA面向对象程序设计实验指导书

图6.9

思考:

(1)JApplet 与Applet 在添加组件时有什么不同?

(2)创建Container 类的目的是什么?用什么方法得到Container 类的对象? (3)JApplet 与Applet 的默认布局是什么?

(4)在顶层容器JApplet、JFrame中能否直接加入组件?

(五)使用自定义对话框与内部类

对话框是GUI 中很常见的窗口对象,有着广泛的应用。对话框和普通窗口最大的不同就是对话框是依附在某个窗口上,一旦它所依附的窗口关闭了,对话框也要随着关闭。Java提供了Dialog 类用于制作自定义对话框,当需要改变一些数据或需要一个提示窗口时可使用自定义对话框。

1.创建自定义对话框的应用程序

(1) 程序功能:创建一个带有文本区及“对话框”按钮的父窗口,单击“对话框”按钮可打开一个自定义对话框,从中可以定义行和列的数值,关闭对话框其设置的设置会显示在父窗口的文本区中。

(2)编写LX6_10.java 程序文件,源代码如下。 import javax.swing.*; import java.awt.*;

import java.awt.event.*;

public class LX6_10 extends JFrame implements ActionListener {

int row=10, col=40;

JPanel p1=new JPanel(), p2=new JPanel();

JTextArea ta=new JTextArea(\文本区行数:\列数:\

JScrollPane scrollPane=new JScrollPane(ta); Button exit=new Button(\关闭\Button dialog=new Button(\对话框\JPanel panel=new JPanel();

LX6_10() {

setContentPane(panel);

setTitle(\带有对话框的父窗口\

panel.setPreferredSize(new Dimension(500,200)); panel.setLayout(new BorderLayout());

panel.add(\p1.add(scrollPane);

p2.add(exit); p2.add(dialog); exit.addActionListener(this); dialog.addActionListener(this); pack();

show(); //setVisible(true);

- 32 -

JAVA面向对象程序设计实验指导书 }

public static void main(String args[]) { new LX6_10(); }

public void actionPerformed(ActionEvent e) { if (e.getSource()==exit)

System.exit(0);

else {

MyDialog dlg=new MyDialog(this, true); dlg.show(); }

}

class MyDialog extends Dialog implements ActionListener {

Label label1=new Label(\请输入行数\Label label2=new Label(\请输入列数\TextField rows=new TextField(50); TextField columns=new TextField(50);

Button OK=new Button(\确定\取消\MyDialog(LX6_10 parent, boolean modal) { super(parent,modal);

setTitle(\自定义对话框\setSize(260,140); setResizable(false); setLayout(null); add(label1); add(label2);

label1.setBounds(50,30,65,20); label2.setBounds(50,60,65,20);

add(rows); add(columns);

rows.setText(Integer.toString(ta.getRows()));

columns.setText(Integer.toString(ta.getColumns())); rows.setBounds(120,30,90,20); columns.setBounds(120,60,90,20);

add(OK); add(Cancel);

OK.setBounds(60,100,60,25);

Cancel.setBounds(140,100,60,25); OK.addActionListener(this); Cancel.addActionListener(this); }

public void actionPerformed(ActionEvent e) {

if(e.getSource()==OK) {

int row=Integer.parseInt(rows.getText()); int col=Integer.parseInt(columns.getText());

- 33 -

JAVA面向对象程序设计实验指导书

ta.setRows(row); ta.setColumns(col);

ta.setText(\文本区行数:\列数:\}

dispose(); } } }

2.编译并运行程序,在父窗口中单击“对话框”按钮会出现“自定义对话框”窗口,如图6.10 所示窗口。设置对话框中参数,单击“确定”按钮,可关闭自定义对话框,并可看到父窗口中出现的变化,如图6.11 所示。

图6.10

图6.11

3.程序分析:本程序包括两个类,一个是程序的主类LX6_10,另外一个是MyDialog 类,它是Dialog (对话框)派生的子类,它是作为LX6_10 的内部类创建的,内部类有一个好处就是可以随意访问主类的成员。在MyDialog 的构造方法中,以主类为父窗口调用了父类的构造方法,生成一个有模式对话框窗口。

此外,MyDialog 类中采用了手工布局方式来安排各组件的位置。两个文本框用来显示和输入数值,点击“确定”按钮后,用这两个数值设定主类中文本区的行列数。无论点击“确定”还是“取消”,最后都调用dispose 方法来关闭自定义对话框。

四、 练习题

1.实验目的:图形界面设计。熟悉AWT 包或Swing 包中组件的使用方法,了解委托事件处理机制。

2.题意(可选做其中一题):

(1)设计一个在Windows 系统中可以使用的“计算器”窗口并实现(+、-、×、%等)其功能。 (2) 设计一个在Windows 系统中可以使用的“日历器”窗口,根据界面提供的月、日、年选项,

- 34 -

JAVA面向对象程序设计实验指导书 选择当前时间并设置出当前时间。

3.要求 实现多种运算,保证运算正确,其运算结果或选择结果要显示在窗口界面上。

实验项目7: JAVA输入/输出系统的应用

一、 实验目的

掌握字符I/O流用法,

二、 实验要求

了解流、输入/输出流的概念,掌握常见的输出/输出流类及其主要方法,掌握File类的属性和方法,掌握用I/O流实现文件读/写、压缩文件读/写的方法。

三.实验内容

(一) 了解异常处理机制 1. 错误与异常

在程序执行期间,会有许多意外的事件发生。例如,程序申请内存时没有申请到、对象还未创建就被使用、死循环等,称为运行错误。根据错误的性质将运行错误分为错误与异常两种类型。 即(1)错误,(2)异常

2. 异常发生的原因 (1)Java 虚拟机检测到了非正常的执行状态,这些状态可能是由以下几种情况引起的:

·表达式的计算违反了Java 语言的语义,例如整数被0 除。 ·在载入或链接Java 程序时出错。

·超出了某些资源限制,例如使用了太多的内存。 (2)Java 程序代码中的throw 语句被执行。 (3)异步异常发生。异步异常的原因可能有: ·Thread 的stop 方法被调用。 ·Java 虚拟机内部错误发生。

3.异常处理机制 发生异常后,怎么处理异常呢? (1)抛出异常

2)捕获异常

简单说异常处理机制就是:当语义限制被违反时,将会抛出异常对象,并将引起程序流程从异常发生点转移到程序员指定的处理异常方法代码处进行异常处理。

1.Exception 异常类的子类

(1)RuntimeException 运行时异常类

RuntimeException 类主要包括以下异常子类:

·ArithmeticException 算术异常类:表示遇到了异常的算术问题,例如被0 整除。

·ArrayStoreException 数组下标越界异常类:试图把与数组类型不相符的值存人数组。 ·ClassCastException 类型强制转换异常类:试图把一个对象的引用强制转换为不合适的类型。 ·IndexOutOfBoundsException 下标越界异常类:下标越界。

·NullPointerException 空指针异常类:试图使用一个空的对象引用。 ·SecurityException 违背安全原则异常类:检测到了违反安全的行为。 (2)NoSuchMethodException 方法未找到异常 (3)java.awt.AWTException 图形界面异常类 (4)java.io.TOException 输入输出异常类 java.io.TOException 类的子类有:

·IOException:申请I/O 操作没有正常完成。

·EOFException:在输入操作正常结束前遇到了文件结束符。

·FileNotFoundException:在文件系统中,没有找到由文件名字符串指定的文件。 (5)Exception 异常类的其它子类

- 35 -

JAVA面向对象程序设计实验指导书

·EmptyStackException:试图访问一个空堆栈中的元素。 ·NoSuchFieldException:试图访问一个不存在的域。 ·NoSuchMethodException:试图访问不存在的方法。

·ClassNotFoundException:具有指定名字的类或接口没有被发现。

·CloneNotSupportedException:克隆一个没有实现Cloneable 接口的类。

·IllegalAccessException:试图用给出了完整的路径信息的字符串加载一个类,但是当前正在执行的方法无法访问指定类,因为该类不是public 类型或在另一个包中。

·InstantiationException:试图使用Class 的newInstance 方法创建一个对象实例,但指定的对象没有被实例化,因为它是一个接口、抽象类或者一个数组。

·InterruptedException:当前的线程正在等待,而另一个线程使用了Thread 的interrupt 方法中断了当前线程。

2.Error 错误类的子类

(1)VirtualMachineError 虚拟机错误 ??OutOfMemoryError 内存溢出错误 ??StackOverflowError 栈溢出错误 (2)LinkageError 链接错误

??NoClassDefNotFoundError 类定义未找到错误 (3) java.awt.AWTError 图形界面错误

(二) 使用try…catch 语句处理异常 1.异常类型匹配的处理方式

(1)程序功能:首先说明\这是一个异常处理的例子\然后在程序中主动产生一个ArithmeticException 类型被0 除的异常,并用catch 语句捕获这个异常。最后通过ArithmeticException 类的对象e的方法getMessage 给出异常的具体类型并显示出来。

(2)编写使用 try?catch语句处理异常的程序文件LX4_6.java,源代码如下。

public class LX4_6{

public static void main(String[] arg3) {

System.out.println(\这是一个异常处理的例子\\n\try {

int i=10; i /=0;

}

catch (ArithmeticException e) {

System.out.println(\异常是:\}

finally {

System.out.println(\语句被执行\

} } }

(3)编译并运行程序,结果如图4.7 所示。

图4.7

- 36 -


java实验指导(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:牛津译林版2017-2018学年九年级(上)期末英语试卷及答案解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: