上机实验指导书-面向对象程序设计
更新时间:2024-07-05 19:26:01 阅读量: 综合文库 文档下载
(语言:Java)
姓 名:_________________
班级学号:_________________
院 系:_________________
指导原则:
为了使学生更快更好地掌握所学知识,技能和软件开发方法 目的:
掌握面向对象程序设计的基础知识 熟练使用Jcreator开发环境开发 掌握Java程序的调试技巧 掌握应用程序的开发步骤 要求:
1,每个实验应独立完成,并对重点内容(教师指定)写出实验的报告 2,实验报告在完成基本功能的情况下,应尽可能丰富其内容。 时间:
必须在下次上机前上交。
第一次上机作业 熟悉Jcreator/ eclipse集成开发环境
实验目的:
熟悉Java集成开发环境Jcreator/ eclipse的安装 熟悉Jcreator/ eclipse应用程序向导创建应用程序 掌握应用程序的编辑,编译,调试,运行四步骤。
掌握顺序结构程序设计:数据结构,语句(数据,运算符,表达式),程序流程(数据表示,输入,处理,输出) 实验内容:
1, Java集成开发环境Jcreator/ eclipse的安装 2, Jcreator/ eclipse应用程序向导创建应用程序
3, 用书上几个实例,掌握应用程序的编辑,编译,调试,运行四步骤 4,了解应用程序的基本结构 操作步骤:
Eclipse集成开发环境:
一, 软件的准备与安装与设置
1,软件下载:下载JDK安装文件,Eclipse压缩文件(已经安装了语言包与GUI插件) JAVA开发工具包(JDK:Java Se Development Kits)下载,
下载网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html, 文件名:jdk-7u7-windows-i586.exe
下载Eclipse,网址:http://www.eclipse.org/downloads/
2, 安装。
JDK安装:找到下载目录(我的下载目录为:D:\\360云盘\\常用软件\\JAVA软件),双击下载文件jdk-7u7-windows-i586.exe,选择安装路径:默认C盘:。 Eclipse安装:找到Eclipse压缩文件,解压缩后直接复制到C:盘即可 3, 设置参数
3.1创建系统变量。步骤:依次点击“我的电脑”-右键-系统属性-环境变量-系统变量下方“新建”。然后在“新建系统变量对话框”中输入变量名:JAVA_HOME,变量值为JDK的安装文件夹路径,复制即可:C:\\Program Files\\Java\\jdk1.7.0_07
.2在上步,点击“环境变量后”,拖动“系统变量”下方的“滚动条”,找到路径:Path,双击,在显示路径最前面增加:java文件运行路径,固定格式:%JAVA_HOME%\\bin; 注意: 最后的分号“;”不能省
二, 进入成开发环境,编辑源程序文件
1, 进入集成开发环境:找到C盘根目录下的Eclipse目录下的eclipse.exe,双击启
动。
2, 设置文件存贮目录
3, 创建JAVA项目
依次点击:文件—新建—新建JAVA项目—“手动输入项目名称”—确定
4, 在项目下源程序文件目录下创建主类,注意:创建主类时,类名应与项目名一
致,且应选中:MAIN主方法 点击在类名前面的加号“+”,找到“src”目录(源程序文件目录),在该项目录上弹鼠标右键,在弹出菜单上点“新建”—“类”。
注:
1,在类名称中,输入名称与项目名称必须一致。
2,方法存根中,应该选中主方法:
5, 编辑源程序文件:主类名与主方法名是自动创建的,不能修改。
三, 编译调试与运行
编辑运行源程序文件:编辑好以后,点击:“运行”菜单下的“运行”按钮。
作业:
1, 应用程序向导新建java应用程序,工程名为exmaple.主方法(main方法)输入语
句为:system.out.println(“2+3=”+(2+3)+“2+3!=”+2+3);
程序运行结果:______________________________________
2, 新建java应用程序,工程名为:lengxing, 在主方法的大括号内输入如下语句:
int a,b,c,i;
for(i=100;i<1000;i++)
{ a=i/100; b=i0/10; c=i;
if(a*a*a+b*b*b+c*c*c= =i) System.out.println(i+” “); }
程序运行结果:
3, 应用向导创建名为studentscore的工程,文件内容如下(参照修改源程序文件): public class studentscore {
static int math,chinese,english,physic,chemic;
static float average() //成员函数或方法没有带参数 { float ave;
ave=math+chinese+english+physic+chemic; // 直接使用成员变量 ave/=5; return(ave); }
public static void main(String[] args) { math=90;chinese=80;english=70;physic=60;chemic=50; //直接给成员变量赋值 // TODO, add your application code System.out.println(average());
} }
试写出程序运行结果:______________________
第二次上机作业 掌握Ja va编程基础
实验目的:掌握Java应用程序的基本结构 掌握简单程序的设计与编程
巩固应用程序的编辑,编译,调试,运行四步骤
掌握应用程序在运行时输入参数的技巧。即主方法的参数设置技巧 掌握分支结构程序设计,根据程序流程写代码。根据代码写流程 实验要求: 实验内容:
1,调试如下程序,写出其流程图及数学表达式并写出相应的运行结果 public class Function { public static void main(String args[])throws IOException { float x, y; Scanner sc=new Scanner(System.in); x=sc.nextFloat(); if ( x<0 ) y = 0; else if ( x >0 && x <= 10 ) y = x; else if ( x > 10 && x <= 20 ) y = 10; else y = -0.5f * x + 20; System.out.println(\ System.out.println(\ } }
1, 并写出运行结果
数学表达式:
运行结果:
1组, 2组, 3组, 4组,
2,掌握主方法的参数设置技巧 操作步骤:
1, ECLIPSE环境下主方法的参数设置技巧: 以Factorial项目(主类名为项目名)为例。
a, 依次点击“运行”,“运行配置”,打开运行配置窗口
b, 点击“项目”下方右边的“浏览”按钮,选择主方法配置的类:Factorial c, 点击“main”类的右边“搜索”按钮,选择类Factorial
d, 点击“(x)=自变量”,在“程序自变量”下方文本框中输入5;
再点击最下方的“运行”按钮。多个参数用空格分开。如输入: 5 8 e, 观察运行结果。
调入程序,运行该程序,写出运行结果。
程序调入方法: 菜单“文件file”,然后点”打开open”,在弹出对话框中找到文件
所在的目录,双击需要打开的java文件即可
public class Factorial {
static long fac( int n ) { int i;
double jianchen=1; for(i=2;i<=n;i++)
jianchen=jianchen*i; return jianchen; }
public static void main(String[] args) // args为字符串数组,args[0]为第一个参数 { int k; long f; k = Integer.parseInt(args[0]);
// “Integer整数类“的静态方法parseInt,把数值型字符串args[0]转换为整数 // args[0]为主方法的第一个参数。多个参数用空格分开,无参数时直接回车。 f = fac(k); System.out.println(f); } }
第三次上机作业 熟悉应用程序的基本结构与程序调试技巧
实验目的: 掌握Java帮助文档的使用
熟悉应用程序的基本结构。 故意设置错误,观察错误提示信息,初步掌握程序的一般调试技巧。
实验要求: 实验内容:
1, 利用帮助文档查找String类和Math类的方法:Method summary,并举例说明。 2, 编写程序:掌握顺序结构和分支结构程序设计
3,实践一般调试技巧:设置断点,输出中间结果。错误部分单词下有符号“^”提示。 操作步骤:
一,Java“独立”帮助文档的使用:共享文件:”JAVA API官方文档中文版.chm” A, 在索引项目下键入查找关键字:如:math.
B, 在下方双击选中栏目,则在右边弹出相应栏目的详细说明。
以及数学类Math各常量Math.E,Math.PI与函数的详细说明:如下
C,使用数学类方法用如下公式求三角形面积:1/2*a*b*sinC: System.out.println(a*b*Math.sin(C*3.14/180)/2);
2、 在“查找结果对话框:Find Results”中找到相关条目后双击进入详细解释项目。 3、 String类的方法即Method summary有:_________________(含义:
________________) _________________(含义:________________)等
4、 Math类的方法有:floor()的含义_________________________________________;
random()的含义____________________________________________________;
二,思考题
试从网络上查找资料,找出当前保险营销员的税收计算工式和公务员的税收计算公式,编程计算月工资2000, 8000, 15000元时各应缴纳多少个人所得税。试做出一个合理的结论。 题目描述: 源程序代码:
运行结果及结论:
第四次上机作业 掌握循环结构程序设计
第四次上机作业 掌握数组的使用
实验目的:
掌握数组的定义与使用。
掌握一元数组及二元数组类对象属性.length的正确使用
掌握字符串类型String与其它数值型数据类型的转换(书P74) 掌握数学类Math成员函数的使用(书P90) 进一步掌握程序的基本结构 实验要求: 实验内容:
1, 程序填空,并写了程序运行运行结果 public class Prime { public static void main(String args[]) { short i, k; int N; String str_k; String str=new String(\ k=Short.parseShort(str); //把字符串str转换为整数k N=(int)Math.sqrt(k); //求k的平方根
}
for (i=2; i<=N; i++) if (k % i==0) break;
str_k=String.valueOf (k); //把整数k转换为字符串str if (i= =N)
System.out.println(str_k+\ else
System.out.println(str_k+\ }
2, 编写程序:
计算二维数组{{1,2,3},{4,5,6,7},{8,9,10,11,12,14,15}}中的最大值,最小值及其差值。
操作步骤:
1, 程序填空题,写出程序运行结果
2, 编写程序 源程序代码:(补充完整) public class exjava {
public static void main(String[] args) {
int c[][]={{1,2,3},{4,5,6,7},{8,9,10,11,12,13,14,15}}; int max=c[0][0],min=c[0][0],mean=c[0][0]; int i,j;
for(i=0;i<____.length;i++) for(j=0;j<________;j++) { if(max
____________________;
System.out.println(\ } }
运行结果:
第五次上机作业 掌握类的定义与使用
实验目的:
了解类与对象的基本概念
掌握类与对象的定义格式及三种成员访问权限的作用
掌握类对象的初始化成员函数及输出成员函数
掌握类的构造函数,析构函数与内联函数的定义与使用 实验要求: 实验内容:
1, 程序填空及运行结果 class bj
{ __________________ //定义私有变量圆半径 _____________________//定义空构造函数
bj(float x) //定义空构造函数并初始化变量r。 {r=x;}
public void set_value(float x) //初始化圆半径的值 { r=x; }
_____________________ //求圆面积 { return(3.14*r*r); }
public double zc() //求圆周长 { double y; y=2*3.14*r; return(y); }
public static void main(String args[])
{ _______________________ //定义类bj对象(或类变量)并初始化 ex1.set_value(3.2f); //初始化bj类对象圆半径的值 System.out.println(\面积=\周长=\
______________________ //定义类bj对象并设置半径为5.5. System.out.println(\面积=\周长=\ } }
2, 编写程序
P91-8 源程序代码:
调试及运行结果:
参考答案:
bj ex2=new bj(5.5f); bj ex1=new bj(); public double mj() bj() { } private float r;
第六次上机作业 掌握类的继承与多态
实验目的:
巩固类的定义与构造函数等基本的运用 掌握类对象的重载与派生的概念与操作 实验要求: 实验内容:
根据P104,题8把以下程序补充完整,并运行 public class circle //定义类circle
{ public __________ float pi=3.14f; //定义类成员变量 private float x,y; private float r;
_______________________ // 定义公有带3个参数构造函数 {x=a;y=b;r=c; }
protected float getX() {return(x); }
protected float getY() {return(y); }
protected float getR() {return(r); }
protected float perimeter() {return(pi*r*2); }
protected float area()
{ _________________ //计算圆的面积 } }
public class cylinder ______________{ //继承类circle private float h;
cylinder(float a,float b,float c,float d)
{____________________ //调用父类构造函数 h=d; }
private float getH() {return(h); }
protected float area()
{ return(pi*2*______________ *h); //隐式调用父类成员r. }
private float volume()
{return(pi*getR()*getR()*h); }
private void display()
{System.out.println(\ System.out.println(\ System.out.println(\
System.out.println(\ System.out.println(\
System.out.println(\ }
public static void main(String[] args) { cylinder example=__________________
//以参数点(100,100),半径80,高90初始化圆柱体类对象
example.display(); }
运行结果:
参考答案: extends circle super(a,b,c);
new cylinder(100,100,80,90); public circle(float a,float b,float c) return(pi*r*r); getR()
static
第七次上机作业 掌握类的多态及综合应用
实验目的:
了解类与对象的基本概念
掌握类与对象的定义格式及三种成员访问权限的作用
掌握类对象的初始化成员函数及输出成员函数
掌握类的构造函数,析构函数与内联函数的定义与使用
掌握类对象的重载与派生的概念与操作
初步掌握类对象的综合应用,即能根据实际问题确定类对象的成员变量和成员函数。 实验要求: 实验内容: 试定义一个描述平面直角坐标系上的二次曲线f(x)=ax?bx?c的一个类CURVE,使用复合梯形公式求该曲线的区间[x1,x2]上的定积分。该公式如下:2?x2x1x2?x1f(x1)?f(x2)n?1,n为等分区间数 f(x)dx?h[??f(x1?i*h)其中h?n2i?1操作步骤: 一,构造类对象
1,根据题意,确定类的成员变量(求解问题要的所有变量(本例中问题为求定积分):定积分的区间端点x1,x2,曲线函数f()的系数a,b,c, 梯形法的等分数n及积分值s等) 2,确定类的成员函数(包括所求解问题:本例中问题为求定积分,是一个成员函数,
integral()及其辅助函数,如求函数值f(float x),初始化成员变量的曲线构造函数CURV
E或定积分赋值函数set(),结果的输出函数print()等)
二,编写主函数
主函数中定义类对象(含构造函数的调用),对象调用其成员函数求解,调用成员函数输出所求解结果(如果求解成员函数本身有输出过程,则该步可省) 参考答案
第八次上次作业 接口包与异常与输入输出
实验目的:
掌握接口的声明与实现 掌握包的概念与包内类的导入
掌握异常的两种处理机制:try..catch..finally结构与throws和throw抛出异常
了解输入输出流的基本概念与使用
掌握标准输入输出流和文件流对象的概念与操作流程实验要求: 实验要求: 实验内容:
根据问题说明,把下列程序补充完整。
1,从键盘上输入10个整数,并放入一个一维数组中,然后将其前5个元素与
后5个元素对换,即:第1个与第10个元素互换,第2个元素与第9个元素互换??第5个元素与第6个元素互换。分别输出数组原来各元素的值和对换后各元素的值。
___________________/*导入“输入输出”包中所有类及方法*/ import java.lang.String.*;/*导入字符串处理包*/ public class StandardIn3 {
public static void main(String[] args) _________________
///*做一个“输入输出异常”抛出*/ {
InputStreamReader iin = ______________________ //从标准输入设备“键盘”生成字符输入流对象iin
BufferedReader bin = new BufferedReader(_________);
//由字符输入流对象生成缓冲输入流(或串输入流)对象bin int i,w; /*w开关量 和 中间量*/ int a[]=new int[10]; boolean b;
for(i=0;i<10;i++)
{ System.out.println(\输入第\个整数\ do{/*判断是否是空串 如 是则重新输入*/ w=1;
try{ /*建立一个异常捕获*/
a[i] = Integer.parseInt(bin.readLine());
/*Integer.parseInt(str)- str 转成 int整形; bin.readLine() - 从系统输入缓冲区读入字符流给buf缓冲区 并返回字符串 */
}
__________________/*捕获“输入数据格式”异常*/ {
System.out.println(\数据输入错误请重新输入\处理异常*/ w = 0; }
}while(w==0); }
System.out.println(\您输入的数组是:\ for(i=0; i<10; i++)/*输出原数组*/ {
System.out.print(a[i]+\ }
for(i=0; i<5; i++)/*对换*/ {
w = a[i];
a[i] = a[9-i]; a[9-i] = w; }
System.out.println(\对换后的数组是:\ for(i=0; i<10; i++)/*输出对换后数组*/ {
System.out.print(a[i]+\ }
System.out.println(); } }
程序运行结果:
2,P153第8题 import java.io.*;
public class P153_8 {
public static void main(String[] args) throws IOException{ String name,xuehao,temp; int score;
float average=0,max=0,min=0,n=0; InputStreamReader iin=new InputStreamReader(System.in); BufferedReader bin= new BufferedReader(iin);
FileWriter fout=new FileWriter(new File(\ BufferedWriter bfout=new BufferedWriter(fout);
boolean endch=true;//输入是否结束开关:名字为空串时结束输入。 while(endch)
{ System.out.println(\ name=bin.readLine();
if(_______________) //名字为空串时结束输入。
{endch=false;continue;}
System.out.println(\ xuehao=bin.readLine();
System.out.println(\
score=Integer.parseInt(bin.readLine());
if(score<0||score>100) //抛出非法参数错误,提示“score data error” __________________________________
bfout.write(name); bfout.newLine(); bfout.write(xuehao); bfout.newLine();
bfout.write(String.valueOf(score)); bfout.newLine(); }
bfout.close();
FileReader fin=new FileReader(new File(\ BufferedReader bfin=new BufferedReader(fin); System.out.println(\ temp=bfin.readLine();
while(__________________) //读取字符串指针为空null时,结束文件读取 { System.out.print(\ temp=bfin.readLine();
System.out.print(\ temp=bfin.readLine();
System.out.println(\ average+=Integer.parseInt(temp); n++;
______________________ //读入下一行字符串 }
bfin.close();
average/=n;
System.out.println(\ } }
程序运行结果:
文本文件名称:
文本文件内容(用记事本打开,用图片粘贴):
参考答案:
import java.io.*; throws IOException
temp!=null
name.compareTo(\
new InputStreamReader(System.in); iin
catch (NumberFormatException e)
temp=bfin.readLine();
throw new IllegalArgumentException(\
第九次上次作业 图形用户界面
实验目的:
了解AWT的概念,掌握其初步使用
掌握三种布局管理的异同及使用条件(或场合)
掌握基于Windows编程的程序的运行机制:事件驱动。
掌握Java的事件驱动实现机制与实现流程 实验要求: 实验内容:
1,请设计一个如下图的GUI,不必实作事件接口。
import java.awt.*;
public class document extends Frame {
document() {
setLayout(new BorderLayout());/*窗口布局*/ Panel pan1 = new Panel();/*容器*/
pan1.setLayout(new GridLayout(3,1,0,5));/*容器布局*/ Panel pan2 = new Panel();/*容器*/
pan2.setLayout(new FlowLayout());/*容器布局*/ Panel pan3 = new Panel();/*容器*/
pan3.setLayout(new FlowLayout());/*容器布局*/ Button but1 = new Button(\检查\按钮*/ Button but2 = new Button(\搜索\ Button but3 = new Button(\选项\ Button but4 = new Button(\存档\ Button but5 = new Button(\取消\ Button but6 = new Button(\求助\
Label lab = new Label(\输入文字\标签*/ TextArea ta = new TextArea();/*文本框*/ pan1.add(but1);/*加载到容器1*/ pan1.add(but2); pan1.add(but3);
pan2.add(but4);/*加载到容器2*/ pan2.add(but5); pan2.add(but6);
pan3.add(lab);/*加载到容器3*/
add(pan1,\加载到窗口 布局位置*/ add(pan2,\ add(pan3,\ add(ta,\
setSize(300,150);/*窗口大小*/ setVisible(true);
}
public static void main(String[] args) { document doc=new document(); // TODO, add your application code //System.out.println(\ } } 或者:
import java.awt.*; public class document
{ public static void main(String[] args) {
Frame fr=new Frame();
fr.setLayout(new BorderLayout());/*窗口布局*/ Panel pan1 = new Panel();/*容器*/
pan1.setLayout(new GridLayout(3,1,0,5));/*容器布局*/ Panel pan2 = new Panel();/*容器*/
pan2.setLayout(new FlowLayout());/*容器布局*/ Panel pan3 = new Panel();/*容器*/
pan3.setLayout(new FlowLayout());/*容器布局*/ Button but1 = new Button(\检查\按钮*/ Button but2 = new Button(\搜索\ Button but3 = new Button(\选项\ Button but4 = new Button(\存档\ Button but5 = new Button(\取消\ Button but6 = new Button(\求助\
Label lab = new Label(\输入文字\标签*/ TextArea ta = new TextArea();/*文本框*/ pan1.add(but1);/*加载到容器1*/ pan1.add(but2); pan1.add(but3);
pan2.add(but4);/*加载到容器2*/ pan2.add(but5); pan2.add(but6);
pan3.add(lab);/*加载到容器3*/
fr.add(pan1,\加载到窗口 布局位置*/ fr.add(pan2,\
fr.add(pan3,\ fr.add(ta,\
fr.setSize(300,150);/*窗口大小*/ fr.setVisible(true); } }
2,请设计一个如下图的GUI,不必实作事件接口。
import java.awt.*;
public class computer extends Frame{ computer() {
setLayout(new GridLayout(4,4,10,10));/*定义布局 4行4列 x 10 y 10*/
Button[] but = new Button[16];/*定义16个按钮*/ for(int i=0; i<10; i++) {
but[i] = new Button(Integer.toString(i));/*建立按钮*/ }
but[10] = new Button(\建立按钮*/ but[11] = new Button(\ but[12] = new Button(\ but[13] = new Button(\ but[14] = new Button(\ but[15] = new Button(\ add(but[7]);/*加载到窗体*/ add(but[8]); add(but[9]); add(but[10]); add(but[4]); add(but[5]); add(but[6]); add(but[11]);
add(but[1]); add(but[2]); add(but[3]); add(but[12]); add(but[0]); add(but[15]); add(but[14]); add(but[13]);
setSize(300,150);/*窗口大小*/ setVisible(true);
}
public static void main(String[] args) { computer doc=new computer(); // TODO, add your application code //System.out.println(\ } }
3,一个能进行加法运算的简单计算器 程序如下:
import java.awt.*;
import java.awt.event.*;
public class add extends Frame implements ActionListener {
Label label1 = new Label(\ //Label label2 = new Label(\ TextField field1 = new TextField(6); TextField field2 = new TextField(6); TextField field3 = new TextField(6); Button button1 = new Button(\ Panel panel=new Panel(); add() { //初始化
setTitle(\简单加法运算\
setLayout(new BorderLayout(50,50)); panel.setLayout(new FlowLayout()); panel.add(field1); panel.add(label1);
panel.add(field2); panel.add(button1); panel.add(field3);
Label lb=new Label(\这是一个简单加法计算器\ add(lb,BorderLayout.NORTH); add(panel,BorderLayout.CENTER);
button1.addActionListener(this);//实现了动作接口: //implements ActionListener当前窗口:this做为按钮的事件监听器,动作//接口只有一个方法:actionPerformed()查帮助文档action可知。 setSize(400,600); setVisible(true); }
public static void main(String[] args) { add addcomputer=new add();
addcomputer.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});
//主窗口增加窗口监听器,可以是实现了接口的任意对象如:new //WindowAdapter(),并实现了接口的相应消息处理方法如windowClosing。 }
public void actionPerformed(ActionEvent e) //实现接口的完成动作消息处//理方法:actionPerformed,注意:参数必须有事件:ActionEvent 和 事件对//象e { int x = Integer.parseInt(field1.getText()) + Integer.parseInt(field2.getText()); field3.setText(Integer.toString(x)); } }
第十次上次作业 swing组件
实验目的:
掌握swing各组件的基本概念,功能与使用方法。 掌握窗口,标签,按钮,编辑组件,列表与组合框各组件在awt和swing中的不同 掌握窗口,标签,按钮,编辑组件,列表与组合框各组件的正确使用 掌握菜单的功能与实现 实验要求: 实验内容:
1, 请编程实现下面的功能。
import java.awt.*;
import java.awt.event.*;/*事件监听器所在包*/ public class menu {
public static void main(String[] args) {
Frame f=new Frame(\建立窗口 窗口标题*/ f.setSize(300,250);/*窗口大小*/
f.addWindowListener(new WindowAdapter() /*窗口事件监听器*/ {
public void windowClosing(WindowEvent e) /*窗口关闭按钮*/ {
System.exit(0);/*退出程序*/ } });
MenuBar mb=new MenuBar();/*定义一个菜单容器*/ Menu m1=new Menu(\定一个菜单项*/
Menu m2=new Menu(\另一个菜单项 作为级联菜单项*/ MenuItem mi1=new MenuItem(\定义菜单功能项*/ MenuItem mi2=new MenuItem(\ MenuItem mi3=new MenuItem(\
MenuShortcut ms4 = new MenuShortcut(KeyEvent.VK_X); /*定义快捷键*/ MenuItem mi4=new MenuItem(\定义菜单功能项并附加快捷键*/
MenuItem mi5=new MenuItem(\
CheckboxMenuItem mi6=new CheckboxMenuItem(\定义带复选框的菜单功能项*/
MenuItem mi7=new MenuItem(\
/*
菜单中exit 的事件监听 */
mi7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);/*退出程序*/ } });
m2.add(mi1);/*挂载到级联菜单*/ m2.add(mi2);
m1.add(m2);/*级联菜单挂载到菜单项*/ m1.add(mi3);/*功能项加载到菜单项*/ m1.add(mi4); m1.add(mi5); m1.add(mi6); m1.add(mi7);
mb.add(m1);/*菜单项加载到菜单容器*/
f.setMenuBar(mb);/*菜单容器挂载到窗体*/ f.show();/*显示窗体*/ } }
2,编写一个简单的文本编辑器,含有三个菜单,FILE,EDIT,HELP,含有三个工具条,打开、新建和储存。
修改意见:利用第10章文件操作,为菜单项添加事件监听器,并实现接口,以完成菜单的相应功能。类似于WINDOW的“记事本”程序 源程序代码:
import java.awt.*;
import java.awt.event.*;/*事件监听器所在包*/ public class notpad {
public static void main(String[] args) {
Frame f=new Frame(\文本编辑器\建立窗口 窗口标题*/ f.setSize(700,550);/*窗口大小*/
f.addWindowListener(new WindowAdapter() /*窗口事件监听器*/ {
public void windowClosing(WindowEvent e) /*窗口关闭按钮*/ {
System.exit(0);/*退出程序*/ } });
MenuBar mb=new MenuBar();/*定义一个菜单容器*/ Menu m1=new Menu(\定一个菜单项*/
Menu m2=new Menu(\另一个菜单项 作为级联菜单项*/ Menu m3=new Menu(\
MenuItem mi1=new MenuItem(\新建\定义菜单功能项*/ MenuItem mi2=new MenuItem(\打开\ MenuItem mi3=new MenuItem(\存储\ MenuItem mi4=new MenuItem(\ MenuItem mi5=new MenuItem(\退出\
MenuItem mi6=new MenuItem(\粘贴\定义菜单功能项并附加快捷键*/ MenuItem mi7=new MenuItem(\剪切\ MenuItem mi8=new MenuItem(\拷贝\ MenuItem mi9=new MenuItem(\帮助主题\ MenuItem mi10=new MenuItem(\ MenuItem mi11=new MenuItem(\关于\ /*
菜单中退出 的事件监听 */
mi5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);/*退出程序*/ } });
m1.add(mi1); m1.add(mi2); m1.add(mi3); m1.add(mi4);
m1.add(mi5); m2.add(mi6); m2.add(mi7); m2.add(mi8); m3.add(mi9); m3.add(mi10); m3.add(mi11);
mb.add(m1);/*菜单项加载到菜单容器*/ mb.add(m2); mb.add(m3);
f.setMenuBar(mb);/*菜单容器挂载到窗体*/ Button but1 = new Button(\新建\ Button but2 = new Button(\打开\ Button but3 = new Button(\存储\ Panel pa = new Panel();
pa.setLayout(new FlowLayout(FlowLayout.LEFT)); pa.add(but1); pa.add(but2); pa.add(but3);
pa.setBackground(Color.gray); f.add(pa,\
TextArea ta = new TextArea(); f.add(ta,\
f.show();/*显示窗体*/ } }
3,综合应用:
编写一个程序实现一个仿真计算器。包括十个数字按钮(0~9)和四个运算符(加减、乘、除),以及等号,小数点和清零两个辅助按钮,还有一个显示输入和输出的文本框。试分别用BorderLayout和 GridLayout实现。 修改意见:用一真实计算界面来设计。
import java.awt.*;
import java.awt.event.*; import javax.swing.*;
import javax.swing.event.*;
public class test_computer extends JFrame /*继承小程序类 实现 ActionListener接口*/ {
double su1; double su2;
int cmpch; //0,1,2,3: +,-,*,/ JTextField jtf = new JTextField();
JButton[] but = new JButton[17];/*定义16个按钮*/ Panel pan = new Panel(); Panel pan2 = new Panel();
JLabel lab = new JLabel(\制作: 耀良\ test_computer () {
setLayout(new BorderLayout(2,2));/*BorderLayout布局*/ jtf.setHorizontalAlignment(JTextField.CENTER); jtf.setEditable(false);
pan.setLayout(new GridLayout(4,4,10,10));/*GridLayout布局 定义布局 4行4列 x 10 y 10*/
pan2.setLayout(new BorderLayout(2,2)); for(int i=0; i<10; i++) {
but[i] = new JButton(Integer.toString(i));/*建立按钮*/ but[i].addActionListener(new digitalhd());/*建立监听*/ }
but[10] = new JButton(\
but[10].addActionListener(new digitalhd());/*建立监听*/
but[11] = new JButton(\建立按钮*/ but[12] = new JButton(\ but[13] = new JButton(\ but[14] = new JButton(\
for(int i=11; i<15; i++) {
but[i].addActionListener(new computerhd());/*建立监听*/ }
but[15] = new JButton(\ but[16] = new JButton(\清空\
but[15].addActionListener(new elsehd()); but[16].addActionListener(new elsehd()); pan.add(but[7]);/*加载到窗体*/
pan.add(but[8]); pan.add(but[9]); pan.add(but[10]); pan.add(but[4]); pan.add(but[5]); pan.add(but[6]); pan.add(but[11]); pan.add(but[1]); pan.add(but[2]); pan.add(but[3]); pan.add(but[12]); pan.add(but[0]); pan.add(but[15]); pan.add(but[14]); pan.add(but[13]);
pan2.add(lab,\ pan2.add(but[16],\ add(jtf,\ add(pan,\ add(pan2,\
lab.setForeground(Color.blue); lab.setText(\制作: 老岩\
setSize(300,200);/*窗口大小*/ setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE); }
public static void main(String[] args) { JFrame jf=new test_computer(); }
class digitalhd implements ActionListener { public void actionPerformed(ActionEvent e) { String dig=jtf.getText(); if(e.getSource()==but[10]) dig=dig+\ else for(int i=0;i<10;i++) if(e.getSource()==but[i]) dig+=String.valueOf(i);
try{ Double dd=Double.parseDouble(dig); }
catch(NumberFormatException nfe){ dig=jtf.getText(); }
jtf.setText(dig); } }
class computerhd implements ActionListener { public void actionPerformed(ActionEvent e) { su1=Double.parseDouble(jtf.getText()); jtf.setText(\
for(int i=11;i<15;i++)
if(e.getSource()==but[i]) cmpch=i-11; } }
class elsehd implements ActionListener
{ public void actionPerformed(ActionEvent e) { String str=\ //jtf.setText(\
if(e.getSource()==but[15]) {
su2=Double.parseDouble(jtf.getText());
switch(cmpch)
{case 0: str=String.valueOf(su1+su2);su1=su1+su2;break; case 1: str=String.valueOf(su1-su2);su1=su1-su2;break; case 2: str=String.valueOf(su1*su2);su1=su1*su2;break; case 3: str=String.valueOf(su1/su2);su1=su1/su2;break; //“su1=”用于实现连续运算:1+2+3+4 }
jtf.setText(str); } else
{su1=0;su2=0;digital=-1; jtf.setText(\ } } } }
第十一次上次作业 Applet程序
实验目的:
操作步骤:
1, 在集成开发环境下创建基于applet小程序,建立如下源程序文件,编译好后,把img
目录夹(含图像文件:自己选定的其它图像文件也行,img文件夹下要有:一个大图像,九个小图像)复制到编译好的字节码文件class所在目录。 2, 运行程序。 源程序代码:
import java.applet.*; import java.awt.*;
import java.awt.event.*; import java.net.*;
public class pintu extends Applet implements MouseListener,KeyListener,Runnable {
Image[] m_Image=new Image[9]; //9个用来装入每个拼图的图片对象 Image m_ImgAll; //总的大图片
int m_nImageNo[][]=new int[3][3]; ////标志现在各个拼图的排列情况
final int NO_IMAGE=-1; //此位置没有拼图
final int IMAGE_WIDTH=120;
//每张拼图的宽
final int IMAGE_HEIGHT=120; ////每张拼图的高
final int DIRECTION_UP=1; final int DIRECTION_DOWN=2; final int DIRECTION_LEFT=3; final int DIRECTION_RIGHT=4; final int DIRECTION_NONE=-1;
final int DELTAX=120; //标志提示信息区的宽度
boolean bWantStartNewGame=false; //游戏是否结束,是否需要开始新游戏 int nStep=0; //已经走的步数 int nTime=0;
//已经玩过的时间,以秒为单位 Thread thTimer; //计时器线程 int nScore=0; //玩家所得的分数 int m_nNumOfImg=0;
//拼图底图所使用的图片的个数
String m_sImgName[]=new String[9]; //记录拼图底图的名字
boolean bOnShowAll=false; //预览的开关
AudioClip m_audioClip1,m_audioClip2; //装载要播放的声音对象 public void init() {
String param=getParameter(\ try {
m_nNumOfImg=Integer.parseInt(param); }
catch(Exception e) {
m_nNumOfImg=1;
System.out.println(\ }
for(int i=0;i m_sImgName[i]=getParameter(\ System.out.println(m_sImgName[i]); if(m_sImgName[i]==null)m_sImgName[i]=\ } System.out.println(param); MediaTracker mediaTracker=new MediaTracker(this); //建立一个监视器 // for(int i=0;i<9;i++) // { // int nTemp=i+1; // m_Image[i]=getImage(getDocumentBase(),\ m_ImgAll=getImage(getDocumentBase(),\ //装载总的大图片 // m_Image[i]=getImage(getDocumentBase(),\// mediaTracker.addImage(m_Image[i],i); mediaTracker.addImage(m_ImgAll,1); // } try { mediaTracker.waitForID(1); } catch(Exception e) { System.out.println(\图片装载出错\ } if(mediaTracker.isErrorAny())System.out.println(\图片装载出错\ for(int i=0;i<9;i++) { m_Image[i]=createImage(IMAGE_WIDTH,IMAGE_HEIGHT); Graphics g=m_Image[i].getGraphics(); int nRow=i%3; int nCol=i/3; g.drawImage(m_ImgAll,0,0,IMAGE_WIDTH,IMAGE_HEIGHT,nRow*IMAGE_WIDTH,nCol*IMAGE_HEIGHT,(nRow+1)*IMAGE_WIDTH,(nCol+1)*IMAGE_HEIGHT,this); System.out.println(\ // m_ImgAll.getGraphics().clipRect(1,1,120,120); // g.copyArea(1,1,120,120,0,0); } System.out.println(\ thTimer=new Thread(this); //为线程分配内存空间 thTimer.start(); //开始线程 initData(); m_audioClip1=getAudioClip(getCodeBase(),\ m_audioClip2=getAudioClip(getCodeBase(),\ addMouseListener(this); addKeyListener(this); } public void initImageAgain(int nImgNo) { //nImgNo为要装载的图像是第几个图像。 if(nImgNo>m_nNumOfImg) { showStatus(\你要的图片不存在!!\ return; } // System.out.println(param); MediaTracker mediaTracker=new MediaTracker(this); //建立一个监视器 // for(int i=0;i<9;i++) // { // int nTemp=i+1; // m_Image[i]=getImage(getDocumentBase(),\ m_ImgAll=getImage(getDocumentBase(),\ //装载总的大图片 // m_Image[i]=getImage(getDocumentBase(),\// mediaTracker.addImage(m_Image[i],i); mediaTracker.addImage(m_ImgAll,1); // } try { mediaTracker.waitForAll(); } catch(Exception e) { System.out.println(\图片装载出错\ } for(int i=0;i<9;i++) { m_Image[i]=createImage(IMAGE_WIDTH,IMAGE_HEIGHT); Graphics g=m_Image[i].getGraphics(); int nRow=i%3; int nCol=i/3; g.drawImage(m_ImgAll,0,0,IMAGE_WIDTH,IMAGE_HEIGHT,nRow*IMAGE_WIDTH,nCol*IMAGE_HEIGHT,(nRow+1)*IMAGE_WIDTH,(nCol+1)*IMAGE_HEIGHT,this); System.out.println(\ // m_ImgAll.getGraphics().clipRect(1,1,120,120); // g.copyArea(1,1,120,120,0,0); } } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { g.setColor(Color.white); //将当前颜色变为白色 g.fillRect(0,0,DELTAX,IMAGE_HEIGHT*3); //填充左边的提示信息区域 g.setFont(new Font(\宋体\ //设置字体 g.setColor(Color.blue); //设置颜色 g.drawString(\步数:\ g.drawString(\现有图片\张\ g.drawString(\请按1-\键改变图片\ //在坐标(10,20)画出字串,来显示现在走了多少步。 g.setColor(Color.white); if(bOnShowAll) { int x=DELTAX; int y=0; g.drawImage(m_ImgAll,x,y,this); return; } for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { int x=i*IMAGE_WIDTH+DELTAX; int y=j*IMAGE_HEIGHT; if(m_nImageNo[i][j]==NO_IMAGE) g.fill3DRect(x,y,IMAGE_WIDTH,IMAGE_HEIGHT,true); else { g.drawImage(m_Image[m_nImageNo[i][j]],x,y,this); g.drawRect(x,y,IMAGE_WIDTH,IMAGE_HEIGHT); }
正在阅读:
上机实验指导书-面向对象程序设计07-05
新人教版必修二高中数学《平面与平面平行的判定》教学设计03-13
2017届四川省宜宾市高三二诊理综物理试卷(带解析)03-17
循环结构程序设计实验报告07-30
维修钳工技师复习资料03-01
电气考试06-18
2018年西华师范大学物理与空间科学学院333教育综合之中国教育史考研仿真模拟五套题03-21
系统解剖学复习试题11-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 指导书
- 上机
- 程序设计
- 面向
- 对象
- 实验