第一部分基本实验 31 contentpane.add(p); setjmenubar(mb); // 将菜单项注册给事件监听者 File_Open.addActionListener(this); File_Close.addActionListener(this); File_Exit.addActionListener(this); Edit_Copy.addActionListener(this); Edit_Cut.addActionListener(this); Edit_Paste.addActionListener(this); public void actionperformed(actionevent e) { if(e.getactioncommand()==" 退出 "){ dispose(); System.exit(0); else ta.settext("\n\n\n\n\t\t 你选择了 :"+e.getactioncommand() ); public static void main(string[] args) { UseJMenu frm=new UseJMenu(); frm.setsize(new Dimension(350,200)); frm.setvisible(true); 3. 思考问题 (1) 用 JFrame 类和 Frame 类构建窗口容器有什么不同? (2) 用 JMenu 类和 Menu 类构建菜单有什么不同? (3) 用 JMextArea 类和 TextArea 类构建的文本区有什么不同? (4) 用 JPopupMenu 类实现基本指导部分的弹出式菜单 (5) 用 Swing 组件重新构建实验八中基本指导部分程序的图形用户界面 四 上机作业 扩展基本指导部分的程序代码, 当用户要关闭 Frame 时, 弹出一个 Dialog 向用户确认关 闭操作 Dialog 包括一个包含文字提示的 Label 和两个按钮, 用户单击 确认 按钮则关闭 Frame 和整个程序, 否则关闭 Dialog, 返回原来的 Frame 实验十 多媒体编程 一 实验目的 (1) 理解 Java Applet 的工作原理 (2) 掌握 Java Applet 的生命周期方法 (3) 掌握 Graphics 类绘制各种图形的方法 (4) 掌握字体 颜色 图像 动画和声音的控制方法
Java 程序设计实用教程实验指导 实训与习题解析 32 二 实验内容 任务 编写一个程序 说明 Applet 如何工作以及启动 Applet 时调用 init() start()和 paint() 方法的顺序 操作步骤 1 开机后 在 java 实验目录下创建 test10 子目录 本阶段的 Java 源程序及编译生成的 字节码文件都放在这个子目录中 2 定义类 AppletDemo 此类为 Java 中 Applet 类的子类 声明三个类型为 String 的类 变量 并定义 Applet 类的 init()方法 代码如下 public class AppletDemo extends Applet { String stringmsg1,stringmsg2,stringmsg3; setbackground(color.yellow); setforeground(color.black); stringmsg1="巳执行 init()方法"; 3 在类 Applet 类中定义 start()方法 代码如下 public void start(){ stringmsg2="巳执行 start()"; 4 在类 Applet 类中定义 paint()方法 代码如下 public void paint(graphics graphics){ stringmsg3="巳执行 paint()方法"; graphics.drawstring(stringmsg1,10,30); graphics.drawstring(stringmsg2,10,60); graphics.drawstring(stringmsg3,10,90); 5 将文件命名为 AppletDemo.java 保存在本次实验目录下并编译该文件 6 新建一个文件 输入如下代码 <html> <body> <applet code= AppletDemo width=300 height=200> </applet> </body> </html> 7 将文件命名为 AppletDemo.html 保存在本次实验目录下 8 通过 Applet 查看器执行该 HTML 文件 命令如下 appletviewer AppletDemo.html 程序的输出结果如图 10-1 所示
第一部分基本实验 33 图 10-1 实验十程序运行结果 三 练习思考 1. 练习内容 1 在鼠标单击的两点间绘制直线, 可以连续绘制直线且线段的颜色为红色 程序代码 : public class linedraw extends Applet { int x1=-1,y1=-1; boolean flag=true; int x2,y2; this.addmouselistener(new java.awt.event.mouseadapter() { public void mousepressed(mouseevent e) { this_mousepressed(e); ); void this_mousepressed(mouseevent e) { flag=!flag; if(flag==true){ x1=e.getx(); y1=e.gety(); else{ x2=e.getx(); y2=e.gety(); if(x1!=-1 && y1!=-1) repaint(); public void update(graphics g){ paint(g); public void paint(graphics g){ g.setcolor(color.red);
34 Java 程序设计实用教程实验指导 实训与习题解析 g.drawline(x1,y1,x2,y2); 运行上面的程序, 程序的运行界面如图 10-2 所示 图 10-2 实验十之练习思考 1 程序运行结果 思考问题 : (1) 本程序是如何定位直线两端点的坐标的? (2) 本程序是如何处理鼠标事件的? (3) 程序中 update() 方法的作用是什么? 2. 练习内容 2 用 Applet 动画实现一个简单的 Applet 影集 程序代码 : public class ImageType extends Applet { int num=5; Image imgs[]; imgs=new Image[num]; for(int i=0; i<num;i++) { imgs[i]=getimage(getdocumentbase(),"images/"+"t"+(i+1)+".gif" ); this.setbackground(color.white); public void paint(graphics g){ while(true){ for(int i=0;i<num;i++){ g.drawimage(imgs[i],0,0,this); try{ Thread.sleep(2000); catch(interruptedexception e){
第一部分基本实验 35 录下? e.printstacktrace(); g.clearrect(0,0,getbounds().width,getbounds().height); 思考问题 : (1) 这部影集里可以放几张照片? (2) 要使该程序正常运行, 照片对应的图片文件名需怎样命名, 应将它们放在什么目 (3) 在本程序中每张照片播放的时间间隔是多少? 四 上机作业 编写 Applet 程序, 实现下面的功能 : 接受用户输入指定的字号 字体和字体风格, 在 Applet 上显示一段指定字体的文字 ; 接受用户输入的 R G B 三种颜色的分量, 配置页面的背景颜色 实验十一 异常处理 一 实验目的 (1) 掌握异常的概念及异常处理的机制 ; (2) 掌握 try-catch-finally 异常处理语句的使用 ; (3) 熟悉用户自定义异常及处理用户自定义异常的方法 二 实验内容 任务 编写一个程序, 同时捕获数组越界和被 0 除的异常, 说明异常处理语句 try-catch-finally 的处理机制 操作步骤 : (1) 开机后, 在 java 实验目录下创建 test11 子目录 本阶段的 Java 源程序及编译生成的 字节码文件都放在这个子目录中 (2) 新建一个 Java 文件, 输入如下程序代码 : public class CatchDemo { public static void main(string[] args) { int number[]={4,8,16,32,64,128,256,512; int denom[]={2,0,4,4,0,8; for(int i=0;i<number.length ;i++){ try { System.out.println(number[i] + " / " + denom[i] + "is " + number[i] / denom[i]);