




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《java程序设计简明教程》上机练习题参考答案
目录
上机练习题13
1.用循环语句分别打印九九乘法表3
2.定义两个数组5
3.编写一个简单的考试程序6
上机练习题28
1.编写程序,包括一个文本域和三个命令按钮8
2.编写程序,包括一个文本框、一个密码框和两个按钮10
3.编写程序,建立一个带有菜单的窗体11
4.编写程序,将窗口尺寸设置为不可更改,并处理窗口事件...13
5.编写程序,用列表框列出一些选项,设置一个按钮15
6.编写程序,用标签显示一道简单测试题,答案使用单选按钮列出17
上机练习题319
1.编写Application在窗口内画54个不同颜色的小圆19
2.编制Applet程序,使用Graphics类中的各种图形绘制方法...21
3.编制Applet程序,以百叶窗效果显示图像21
4.编制Applet程序,实现12个钢琴键及其声音的模拟25
上机练习题428
Java程序设计简明教程
1.假设在addressbook数据库表中,存在多个姓氏相同的人,根据这
一情况,建立相应的查询功能28
2.编写一个应用程序,使其可以从一个数据库的某个表中查询一个
列的所有信息30
3.设计一个数据库应用程序,功能是在学生数据库的成绩表中加入
某门课程的所有学生的成绩35
上机练习题540
1.编写GUI程序,制作一个文本文件阅读器40
2.编制程序,计算表达式“2*4*6+8*10*12++26*28*30"的值,
并把结果输出到文件中42
3.编制程序43
4.编写程序,实现压缩、解压缩Zip文件45
5.编写程序,从试题文件中抽取Java单选题进行测试练习48
上机练习题652
1.编制程序,求如下表达式的值52
2.用继承Thread类的方法实现一个多线程程序54
3.编制程序,同时显示两个时区的时钟,并将时钟的结果显示在
Fram窗体中56
4.使用异常处理机制和输入/输出处理机制编写一个程序62
上机练习题763
1.编制Applet程序,使用Graphics类的常用方法,绘制一面五星红
2
旗63
2.编制Applet程序,实现一行文字的动画显示,即文字跑马灯64
3.编制Applet程序,实现图片的水中倒影66
4.结合图形用户界面与事件处理,创建一个日历GUI程序69
上机练习题873
1.设计JavaApplet程序,实现在图片上飘雪花的特效73
2.设计一个通讯录,保存读者信息76
3.构造一个程序,它在一个窗口描绘出一个小鸟的图标82
上机练习题1
1.用循环语句分别打印如图1-24所示的九九乘法表。
【参考程序】
〃文件XiTil」」」.java
packageXiTi;
importjava.io.*;
Java程序设计简明教程
importjava.lang.*;
publicclassXiTil_l_l{
publicstaticvoidmain(Stringargs[]){
Stringstr="
intij;
for(i=l;i<=9;i++){
for(j=l;j<=9;j++){
str=i+"*"+j+"="+i*j;
if(i<j)
System.out.print("");
else
System.out.print(str.length()==5?str+"":str+"");
)
System.out.println("");
)一
)
}
〃文件XiTil_l_2.java
packageXiTi;
importjava.io.*;
importjava.lang.*;
publicclassXiTil_l_2{
publicstaticvoidmain(Stringargs[]){
Stringstr="
inti,j;
for(i=l;i<=9;i++){
for(j=l;j<=9;j++){
str=i+"*"+j+"="+i*j;
if(i>j)
System.out.print("");
else
System.out.print(str.length()==5?str+"":str+"");
)
System.out.println("");
}一
)
}
4
〃文件XiTil_l_3.java
packageXiTi;
importjava.io.*;
importjava.lang.*;
publicclassXiTil_l_3{
publicstaticvoidmain(Stringargs[]){
Stringstr="
inti,j;
for(i=l;i<=9;i++){
for(j=l;j<=9;j++){
str=i+"*"+j+"="+i*j;
System.out.print(str.length()==5?str+"":str+"");
}
System.out.println("");
)"
}
}
2.定义两个数组,首先将第一个数组中的元素复制到第二个数组
中,然后将第二个数数组进行从大到小的排序,最后将两个数组中的
对应元素进行比较,试统计两个数组中对应位置上相同元素的个数。
【参考程序】
//文件XiTil_2.java
packageXiTi;
importjava.io.*;
importjava.lang.*;
publicclassXiTil_2{
publicstaticvoidmain(String[]args){
inta[]={278,l09,063,930,589,184,505,269,8,83};
intb[]=newint[10];
intt,cnt=0;
for(inti=0;i<10;i++)
b[i]=a[i];
for(inti=l;i<10;i++)
for(intj=0;j<10-i;j++)
if(b[j]<b[j+l]){
Java程序设计简明教程
t=b[j];b[j]=b[j+l];b[j+l]=t;
}
for(inti=0;i<10;i++)
if(a[i]==b[i])
cnt++;
Systej'Q.outpnntln("*********************
*4*«4>11\i.
/9
System.out.println("");
for(inti=0;i<10;i++)
System.out.print(a[i]+"");
System.out.println("");
System.out.println("");
SystemoutpnntlnC'*********************b
If\
1*
System.out.println("");
for(inti=0;i<10;i++)
System.out.print(b[i]+"");
System.out.println("");
System.out.println("");
System.out.println("对应元素相同的个数为:"+cnt);
System.out.println("");
}
)
3.编写一个简单的考试程序。
【参考程序】
〃文件XiTil_3.java
packageXiTi;
importjava.io.*;
importjava.util.Date;
publicclassXiTil_3{
publicstaticvoidmain(String[]args){
Stringyes="Y",ok="";'、
intx,x1,y,opr=2,s,h,m,tl,t2;
Stringop,str="",re="",a="A";
do{
6
x=newLong(Math.round(Math.random()*99+l)).intValue();
y=newLong(Math.round(Math.random()*99+l)).intValue();
opr=newLong(Math.round(Math.random()*3+l)).intValue();
s=newDate().getSeconds();
h=newDate().getHours();
m=newDate().getMinutes();
tl=h*3600+m*60+s;
switch(opr){
case1:
str=x+"+"+y+"=?";
re=Integer.toString(x+y);
break;
case2:
str=x+"-"+y+"=?";
re=Integer.toString(x-y);
break;
case3:
str=x+"*"+y+"=?";
re=Integer.toString(x*y);
break;
case4:
xl=Math.max(x,y);
y=Math.min(x,y);
x=xl;
x=x-x%y;
str=x+'7"+y+"=?";
re=Integer.toString(x/y);
break;
}
System,out.print(str);
try(
BufferedReaderin
=newBufferedReader(new
InputStreamReader(System.in));
ok=in.readLine();
}catch(IOExceptione){};
s=newDate().getSeconds();
Java程序设计简明教程
h=newDate().getHours();
m=newDate().getMinutes();
t2=h*3600+m*60+s;
if(ok.equals(re.trim()))
System.out.println("正确!用时:"+(t2-tl)+"秒");
elseif(a.equals(ok.toUpperCase()))
System.out.println("答案:"+re+",请多努力!");
else
System.out.printing错误!答案:"+re);
System.out.print("继续吗(Y/N)?");
try(
BufferedReaderin
=newBufferedReader(new
InputStreamReader(System.in));
ok=in.readLine();
}catch(IOExceptione){};
}while(yes.equals(ok.toUpperCase()));
System.out.println("");
)
)
上机练习题2
1.编写程序,包括一个文本域和三个命令按钮,按钮标题分别为
红色、黄色和蓝色,单击相应的按钮,将文本域的前景色设置为红
色、黄色和蓝色。
【参考程序】
importjavax.swing.*;
importjavax.swing,event.*;
importjava.awt.event.*;
importjava.awt.*;
publicclassxiti2_lextendsJFrameimplementsActionListener{
JButtonred,yellow,blue;
JTextAreata=newJTextArea(5,20);
xiti2_l(){
8
red=newJButton("红色");
yellow=newJButton("黄色");
blue=newJButton("蓝色)
red.addActionListener(this);
yellow.addActionListener(this);
blue.addActionListener(this);
JPaneljp=newJPanel();
jp.setLayout(new
FlowLayout(FlowLayout.CENTER));
jp.add(red);
jp.add(yellow);
jp.add(blue);
Containercon=getContentPane();
con.add(ta,BorderLayout.CENTER);
con.add(jp,BorderLayout.SOUTH);
setSize(300,200);
setTitle("上机练习题2」");
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
validate();
}
publicvoidactionPerformed(ActionEvente){
JButtonbtn=(JButton)e.getSource();
if(btn==red){
ta.setForeground(Color.red);
)
if(btn==yellow){
ta.setForeground(Color.yellow);
}'
if(btn==blue){
ta.setForeground(Color.blue);
}
)
publicstaticvoidmain(Stringargs[]){
newxiti2_l();
)
Java程序设计简明教程
}
2.编写程序,包括一个文本框、一个密码框和两个按钮。按钮标
题分别为确定和取消,用户在密码框中输入密码,单击确定按钮,将
在密码框中输入的字符显示在文本框中。
【参考程序】
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.
publicclassxiti2_2extendsJFrameimplementsActionListener{
JPanelpl=newJPanel();
JPanelp2=newJPanel();
JPanelp3=newJPanel();
JPanelp4=newJPanel();
JPanelp5=newJPanel();
JTextFieldtext=newJTextField(15);
JPasswordFieldpassword=newJPasswordField(15);
JButtonok=newJButton("确定");
JButtoncancel=newJButton("取消");
xiti2_2(){
Containercon=getContentPane();
con.setLayout(newGridLayout(5,l));
p2.add(newJLabel("密码:"));p2.add(password);
p3.add(newJLabel("文本:"));
p3.add(text);
p4.add(ok);p4.add(cancel);
ok.addActionListener(this);
cancel.addActionListener(this);
con.add(pl);
con.add(p2);
con.add(p3);
con.add(p4);
con.add(p5);
setSize(300,200);
setVisible(true);
io
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("上机练习题2_2");
validate();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==ok){
text.setText(password.getText());
)
if(e.getSource()==cancel){
dispose();
System.exit(O);
)
}
publicstaticvoidmain(Stringargs[]){
newxiti2_2();
)
)
3.编写程序,建立一个带有菜单的窗体。当用户选择“Color”
或“Style”菜单的相关选项时,标签中文字的字体和颜色会发生相
应的变化。
【参考程序】
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
classxiti2_3extendsJFrameimplementsActionListener{
JMenuBarmenubar=newJMenuBar();
JTextAreata=newJTextArea("HelloJava!!");
xiti2_3(){
setJMenuBar(menubar);
JMenumenu,submenu;
JMenuItemmenuitem;
menu=newJMenu("Color");
menu.setMnemonic(KeyEvent.VK_C);
menubar.add(menu);
menultem=newJMenuItem("Yellow");
Java程序设计简明教程
menuItem.setMnemonic(KeyEvent.VK_Y);
menuItem.addActionListener(this);
menu.add(menuitem);
menultem=newJMenuItem("Orange");
menuItem.setMnemonic(KeyEvent.VK_O);
menuItem.addActionListener(this);
menu.add(menuitem);
menultem=newJMenuItem("Pink",KeyEvent.VK_P);
menuItem.addActionListener(this);
menu.add(menuitem);
menultem=newJMenuItem("Blue");
menuItem.setMnemonic(KeyEvent.VK_B);
menuItem.addActionListener(this);
menu.add(menuitem);
menu=newJMenu("Style");
menu.setMnemonic(KeyEvent.VK_S);
menubar.add(menu);
menultem=newJMenuItem("Plain");
menuItem.setMnemonic(KeyEvent.VK_P);
menuItem.addActionListener(this);
menu.add(menuitem);
menultem=newJMenuItem("Bold");
menuItem.setMnemonic(KeyEvent.VK_B);
menuItem.addActionListener(this);
menu.add(menuitem);
menultem=newJMenuItem("Italic");
menuItem.setMnemonic(KeyEvent.VK_I);
menuItem.addActionListener(this);
menu.add(menuitem);
menu=newJMenu("Exit");
menu.setMnemonic(KeyEvent.VK_E);
menubar.add(menu);
menultem=newJMenuItem("CloseWindow");
menuItem.setMnemonic(KeyEvent.VK_W);
menuItem.addActionListener(this);
menu.add(menuitem);
Containercp=getContentPane();
cp.add(ta,BorderLayout.SOUTH);
12
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("菜单演示)
setSize(300,200);
setVisible(true);
}
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand()=="Yellow")
ta.setForeground(Color.yellow);
if(e.getActionCommand()=="Orange")
ta.setForeground(Color.orange);
if(e.getActionCommand()=="Pink")
ta.setForeground(Color.pink);
if(e.getActionCommand()=="Blue")
ta.setForeground(Color.blue);
if(e.getActionCommand()=="Plain")
ta.setFont(new
Font("Dialog",Font.PLAIN,24));
if(e.getActionCommand()=="Bold")
ta.setFont(new
Font("Dialog",Font.BOLD,24));
if(e.getActionCommand()=="Italic")
ta.setFont(new
Font("Dialog",Font.ITALIC,24));
if(e.getActionCommand()=="CloseWindow")
System.exit(O);
}
publicstaticvoidmain(Stringargs[]){
xiti2_3menuexmple=newxiti2_3();
)
)
4.编写程序,将窗口尺寸设置为不可更改,并处理窗口事件,使
得点击窗口关闭按钮时,会弹出对话框,提示用户是否确定要关闭窗
□o
【参考程序】
importjava.awt.event.*;
Java程序设计简明教程
importjavax.swing.*;
classMyFrameextendsJFrame{
privateJLabellabel;
publicMyFrame(){
setTitle("我的窗口)
label=newJLabel(”请点击关闭按钮!"JLabeLCENTER);
getContentPane().add(label);
〃为窗口添加关闭事件
addWindowListener(newWindowCloseListener(this));
〃将点击窗口关闭按钮默认的关闭窗口功能去掉
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
〃设置窗口大小不可更改
setResizable(false);
setSize(300,200);
setVisible(true);
}
classWindowCloseListenerextendsWindowAdapter{
JFramef;
publicWindowCloseListener(JFrameframe){
f=frame;〃f是对话框的父窗口
)
publicvoidwindowClosing(WindowEvente){
inti=JOptionPane.showConfirmDialog(f,"确定要关闭窗
口吗?
","",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTIO
N_MESSAGE);
if(i==JOptionPane.OK_OPTION){
System.exit(O);〃点击确定退出程序
}
}
}
publicstaticvoidmain(String[]args){
JFrameframe=newMyFrame();
}
)
5.编写程序,用列表框列出一些选项,设置一个按钮,点击按钮
就会将所选的选项添加到另一个列表框中,其中第二个列表框中显示
的已选项目可以删除。程序运行界面如图2-16所示。
【参考程序】
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.util.*;
classMyListextendsJFrame{
JPanelpanel;
JButtonadd,remove;
DefaultListModellistModel1,listMode12;
JListlistl,list2;
String[]s={”计算机科学与技术”,”计算机通信应用电子”,“电子
商务“,”会计电算化“,"法律7工商管理",“生物技术”J建筑工程技
术工业设计“,“商务英语“,“统计”};
ArrayListarrayl,array2;
publicMyList(){
setTitle("列表轴)
add=newJButton("»");
add.addActionListener(newAddActionListener());〃为按
钮注册监听器
remove=newJButton("«");
remove.addActionListener(newRemoveActionListener());〃为按
钮注册监听器
listModell=newDefaultListModel();〃为列
表1创建一个列表框模型
listModel2=newDefaultListModel();〃为列
表2创建一个列表框模型
for(inti=O;i<s.length;i++){
listModel1.addElement(s[i]);〃为列表框模型1
添加元素
}
listl=newJList(listModell);〃通过列表框
模型1创建列表框1
Java程序设计简明教程
list2=newJList(listModel2);//通过列表框
模型2创建列表框2
panel=newJPanel();
panel.setLayout(newGridLayout(2,l));//面板用来放
置按钮
panel.add(add);
panel.add(remove);
Containerc=getContentPane();
c.setLayout(newFlowLayout(FlowLayout.LEFT));
c.add(listl);
c.add(panel);
c.add(list2);
setSize(280,280);
setVisible(true);
}
classAddActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
intid=-l;
id=listl.getSelectedIndex();〃得到列表框1中
被选中的项
if(id>=0){
listModel2.addElement(listModel1.get(id));〃向列表框2中添
加所选项
listModel1.remove(id);〃将列表框1中所
选项删除
}
)
}
classRemoveActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
intid=-l;
id=list2.getSelectedIndex();〃得到列表框2中
被选中的项
if(id>=0){
listModel1.addElement(listModel2.get(id));〃向列表框1中添
加所选项
16
listModel2.remove(id);〃将列表框2中所
选项删除
}
)
}
publicstaticvoidmain(Stringargs[]){
newMyList();
}一
}
6.编写程序,用标签显示一道简单测试题,答案使用单选按钮列
出,用户选择答案后,会弹出对话框显示结果或说明。
【参考程序】
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
classQuestion(
publicJFrameframe;
publicJPanelpanel;
staticJLabellabel;
publicJRadioButtonbl,b2,b3;
staticStringquestion],如果你意外地拿到一千元奖金,想去买一
件很需要的大衣,但是钱不够;如果去买一双不急需要的运动
鞋,则又多了数百元,你会怎么做?”;
staticStringxxl="自己添些钱把大衣买回来。";
staticStringxx2="买运动鞋再去买些其它的小东西。";
staticStringxx3="什么都不买先存起来。";
staticStringddl="你的决断力不错,虽然有时也会三心二意、
犹豫徘徊,可总是在重要关头作出决定,你最大的特色是作了
决定不再反悔。
staticStringdd2="你是拿不定主意的人,做事没主见,处处要
求别人给你意见,很少自己做判断,因为个性上你有些自卑,
不肯定自己。";
staticStringdd3="你是判断力超级强的人,不客气地说,你甚
至有点莽撞,就是因为你冲动率直的个性,反而考虑不够周
Java程序设计简明教程
详,你常常后悔自己匆匆作决定,忽略了其它事情。”;
publicJOptionPaneoptionPane;
publicQuestion(){〃构造方
法,完成布局
frame=newJFrame("心理测试");
panel=newJPanel();
panel.setLayout(newGridLayout(3,1));
label=newJLabel(question,JLabel.CENTER);
bl=newJRadioButton(xxl);
b2=newJRadioButton(xx2);
b3=newJRadioButton(xx3);
ButtonGroupgroup=newButtonGroupO;
group.add(bl);
group.add(b2);
group.add(b3);
RadioListenermyListener=newRadioListener();
bLaddActionListener(myListener);
b2.addActionListener(myListener);
b3.addActionListener(myListener);
Containerc=frame.getContentPane();
c.add(label,BorderLayout.NORTH);
c.add(panel,BorderLayout.CENTER);
panel.add(bl);
panel.add(b2);
panel.add(b3);
frame.pack();
frame.setVisible(true);
}
classRadioListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){〃事件处理,点
击选项弹出相应的对话框
JRadioButtonrb=(JRadioButton)e.getSource();
if(rb==bl){
optionPane.showMessageDialog(frame,ddl,"",JOptionPane.DEFAU
LT_OPTION);
)
if(rb==b2){
18
optionPane.showMessageDialog(frame,dd2,"",JOptionPane.DEFAU
LT_OPTION);
}
if(rb==b3){
optionPane.showMessageDialog(frame,dd3,"",JOptionPane.DEFAU
LT_OPTION);
)
}
)
publicstaticvoidmain(String[]args){
newQuestion();
)
}
上机练习题3
1.编写Application在窗口内画54个不同颜色的小圆,每当窗口
显7F在显ZF器上、从隐臧变成显ZF、从缩小图标还原、改变窗口的大
小时,小圆所呈现的颜色也可以发生变化。(提示:使用随机数产生
随机颜色)。程序以不同颜色的小圆铺满窗口。如果在窗口内只显示
某个特定的部分,其他部分则不显示时。
【参考程序】
〃文件RandomColorDemo.java
importjava.awt.*;
importjavax.swing.*;
classRandomColorDemoextendsJFrame{
staticRandomColorDemofrm=newRandomColorDemo();
publicstaticvoidmain(Stringargs[]){
frm.setTitle("RandomColor");
frm.setSize(200,150);
frm.setVisible(true);
}
publicvoidpaint(Graphicsg){
for(intx=10;x<=180;x=x+20)
for(inty=30;y<=140;y=y+20){
intred=(int)(Math.random()*255);//红色的随机数
Java程序设计简明教程
intgreen=(int)(Math.random()*255);//绿色的随机数
intblue=(int)(Math.random()*255);//蓝色的随机数
g.setColor(newColoured,green,blue));〃设置颜色
g.fiHOval(x,y,15,15);//用指定的颜色填满小圆
)
)
)
〃文件RandomColor.java
importjava.awt.*;
importjavax.swing.*;
classRandomColorextendsJFrame{
staticRandomColorfrm=newRandomColor();
publicstaticvoidmain(Stringargs[]){
frm.setTitle("RandomColor");
frm.setSize(200,150);
frm.setVisible(true);
)
publicvoidpaint(Graphicsg){
g.setClip(35,37,125,100);
//g.clipRect(35,37,125,100);
for(intx=10;x<=180;x=x+20)
for(inty=30;y<=140;y=y+20){
intred=(int)(Math.random()*255);//红色的随机数
intgreen=(int)(Math.random()*255);//绿色的随机数
intblue=(int)(Math.random()*255);//蓝色的随机数
g.setColor(newColoured,green,blue));〃设置颜色
g.fillOval(x,y,15,15);〃用指定的颜色填满小圆
)
//g.clearRect(35,37,125,100);
}
)
20
2.编制Applet程序,使用Graphics类中的各种图形绘制方法,
绘制一个可爱的熊宝宝(或其他自己爱好的小动物,例如,小猪,小
兔等)。在小应用程序浏览器中查看程序的执行结果。
【参考程序】
importjava.applet.*;
importjava.awt.*;
importjava.awt.Graphics;
publicclassBearextendsApplet{
publicvoidpaint(Graphicsg){
g.drawOval(l00,40,180,180);//face
g.fillOval(l20,90,40,35);//lefteye
g.fillOval(220,90,40,35);//righteye
g.fillOval(l80,140,25,25);//nose
g.setColor(Color.red);
g.fillArc(l66,170,50,30,180,180);//mouse
g.fiUArc(85,25,80,80,25,223);//leftear
g.fillArc(215,25,80,80,-57,213);//rightear
g.drawLine(156,210,96,320);//body
g.drawLine(96,320,126,410);
g.drawLine(236,210,296,320);
g.drawLine(296,320,256,410);
g.drawLine(l26,410,256,410);
g.fill0val(80,240,50,50);//arm
g.fill0val(260,240,50,50);
g.fill0val(100,390,50,50);//leg
g.fill0val(230,390,50,50);
)
)
3.编制Applet程序,以百叶窗效果显示图像。
【参考程序】
〃文件Efficient.java
importjava.awt.*;
importjava.applet.*;
importjava.io.*;
importjava.awt.image.*;
publicclassEfficientextendsAppletimplementsRunnable{
Java程序设计简明教程
privateImageimg[],showimage;
privateMediaTrackerimageTracker;
privateintImageW,ImageH,totalImage=5,currentimage,nextimage;
privateThreadthread;
privateintdelay;
privateinttotalPix,pixI[],pix2[],pix3[],pix4[],pix5[],pixA[],pixB[];
publicvoidinit(){
this.setBackground(Color.black);
img=newImage[totallmage];
imageTracker=newMediaTracker(this);
Strings=newString("");
for(inti=0;i<totallmage;i++){
s=getParameter("image"+(i+1));
img[i]=getImage(getCodeBase(),s);
imageTracker.addImage(img[i],O);
}
try(
imageTracker.waitForlD(O);
}catch(InterruptedExceptione){}
if(getParameter("delay")==null){
delay=3000;
)
else{
delay=Integer.parseInt(getParameter("delay"));
}
ImageW=img[O].getWidth(this);
ImageH=img[O].getHeight(this);
totalPix=ImageW*ImageH;
pixl=newint[totalPix];
PixelGrabberPGl=new
PixelGrabber(img[O],O,O,ImageW,ImageH,pixl,O,ImageW);
try(
PGl.grabPixels();
}catch(InterruptedExceptionex){}
pix2=newint[totalPix];
PixelGrabberPG2=new
PixelGrabber(img[l],0,0,ImageW,ImageH,pix2,0,ImageW);
try(
22
PG2.grabPixels();
}catch(InterruptedExceptionex){}
pix3=newint[totalPix];
PixelGrabberPG3=new
PixelGrabber(img[2],0,0,ImageW,ImageH,pix3,0,ImageW);
try{
PG3.grabPixels();
}catch(InterruptedExceptionex){}
pix4=newint[totalPix];
PixelGrabberPG4=new
PixelGrabber(img[3],0,0,ImageW,ImageH,pix4,0,ImageW);
try(
PG4.grabPixels();
}catch(InterruptedExceptionex){}
pix5=newint[totalPix];
PixelGrabberPG5=new
PixelGrabber(img[4],0,0,ImageW,ImageH,pix5,0,ImageW);
try(
PG5.grabPixels();
}catch(InterruptedExceptionex){}
currentImage=O;
pixA=newint[totalPix];
pixB=newint[totalPix];
showlmage=img[0];
thread=newThread(this);
thread.start();
)
publicvoidpaint(Graphicsg){
g.drawlmage(showlmage,0,0,this);
)
publicvoidupdate(Graphicsg){
paint(g);
)
publicvoidrun(){
if(thread==null){
thread=newThread(this);
thread.start();
Java程序设计简明教程
while(true){
try(
thread.sleep(delay);
nextlmage=((currentlmage+l)%totallmage);
if(currentImage==O){
System.arraycopy(pix1,0,pixA,0,totalPix);
System.arraycopy(pix2,0,pixB,0,totalPix);
showlmage=createlmage(new
MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
}
if(currentlmage==1){
System.arraycopy(pix2,0,pixA,0,totalPix);
System.arraycopy(pix3,0,pixB,0,totalPix);
showlmage=createlmage(new
MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
)
if(currentlmage==2){
System.arraycopy(pix3,0,pixA,0,totalPix);
System.arraycopy(pix4,0,pixB,0,totalPix);
showlmage=createlmage(new
MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
}
if(currentlmage==3){
System.arraycopy(pix4,0,pixA,0,totalPix);
System.arraycopy(pix5,0,pixB,0,totalPix);
showlmage=createlmage(new
MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
)
if(currentlmage==4){
System.arraycopy(pix5,0,pixA,0,totalPix);
System.arraycopy(pixl,0,pixB,0,totalPix);
showlmage=createlmage(new
MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
24
while(true){
for(inti=0;i<(int)(ImageH/10);i++){
try(
thread.sleep(100);
for(intj=0;j<ImageH;j+=(int)(ImageH/10)){
for(intk=0;k<ImageW;k++){
pixA[ImageW*(j+i)+k]=pixB[ImageW*(j+i)+k];
}
}catch(InterruptedExceptione){}
showlmage=createlmage(new
MemoryImageSource(ImageW,ImageH,pixA,0,ImageW));
repaint();
break;
currentlmage=nextlmage;
repaint();
}catch(InterruptedExceptione){}
4.编制Applet程序,实现12个钢琴键及其声音的模拟。
【参考程序】
〃文件Piano.java
importjava.awt.*;
importjava.applet.*;
classKeyboardextendsCanvas{〃钢琴键类
ColorkeyColor=Color.white;
AudioClipkey;
intwidth,height;
Keyboard(Colorc,AudioClipk){〃初始化钢琴键的颜色及声音
keyColor=c;
setBackground(keyColor);
key=k;
Java程序设计简明教程
width=this.getSize().width;
height=this.getSize().height;
}―
publicbooleanmouseDown(Eventevent,intx,inty){〃鼠标按下
事件
key.playO;
returntrue;
}
publicvoidpaint(Graphicsg){〃画钢琴键
width=this.getSize().width;
height=this.getSize().height;
g.setColor(Color.black);
g.drawRect(0,0,width-1,height-1);
}‘
)
publicclassPianoextendsApplet{
privateintheight,width;
privateKeyboardkey[];
privateAudioClipsound[];
publicvoidinit(){
this.setLayout(null);
width=this.size().width;
height=this.size().he
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道岔基本轨更换施工方案
- 员工激励咨询流程及方案
- 乌海造价咨询服务方案
- 用户行为预测模型优化-洞察及研究
- 海南光伏安装施工方案
- 手势交互与医疗设备融合-洞察及研究
- 新型肾上腺酮受体激动剂的筛选与鉴定-洞察及研究
- 机器人协同作业模式-洞察及研究
- 蜂窝不锈钢施工方案
- 心理倾听咨询服务方案
- 内部审核检查记录表
- 数据安全国家标准体系(2025 版)
- DB61-T 5125-2025 绿色生态小区建设评价标准
- 人教版(PEP) 六年级上册 Units 1–2综合检测卷月考一 (含答案含听力原文无音频)
- 不良债权管理办法
- 浙江省质量科学研究院招聘(2025年第二批)笔试模拟试题附答案详解
- 研学旅行设计学习情境三研之有方研学设计06课件
- 面向高效节能的空调换热器微通道结构优化设计与实验验证
- 羊水过少的诊断与处理
- 幕墙清洗安全培训
- 术后常见并发症及处理
评论
0/150
提交评论