实验6 图形用户界面和Applet编程实验计算机.docx
《实验6 图形用户界面和Applet编程实验计算机.docx》由会员分享,可在线阅读,更多相关《实验6 图形用户界面和Applet编程实验计算机.docx(18页珍藏版)》请在冰豆网上搜索。
实验6图形用户界面和Applet编程实验计算机
实验6图形用户界面和Applet编程实验
一、实验目的:
1.掌握Java中图形用户界面的编程
2.掌握布局管理器和事件的响应方法。
3.掌握Applet多媒体开发方法
二、实验环境(硬/软件要求):
通过局域网互联,安装Windows2000/XP操作系统环境的JDK1.5.0(或以上版本),
JcreaterPro或JBuilder9、eclipse。
三、实验内容:
编写简单的图形用户界面并进行事件处理;编写程序熟悉常见组件的使用;编写程序进行图形化显示;编写程序进行Applet多媒体开发。
四、实验主要步骤:
1编写一个算数测试小软件。
点击获取题目进行随机出题,点击确认答案判断答题正确与否。
一次可出多题,可以判断答案对错。
2编写一个班级推选优秀生的软件,可列出参与推优的学生名单,能够显示当前投票人数以及每名候选者得票数,如果同时能够图形化显示得票数更佳。
3编写一个程序,画出一辆小车图案。
思考是否能让小车平行移动?
如何移动?
4编写一个Applet程序,在网页中同时显示自己的生活照和播放一段音乐。
五、实验报告形式(纸质/电子):
1.纸质(实验报告),可打印。
试验结果截图打印出来,附在试验报告后
2.电子(程序源代码、运行结果)
3.回答下述问题
有几种窗体布局管理器,各有何不同?
六、评分标准:
1.能否自如地设计完成要求验证的内容。
异常的处理是否恰当。
2.程序设计的风格,是否规范。
3.各个程序的源代码,要求对代码行进行适当地注释说明;
4.上机实验的态度是否认真,实验报告书写是否规范完整。
1、
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.FlowLayout;
importjava.awt.Font;
importjava.awt.GridLayout;
importjava.awt.Label;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.util.Random;
importjavax.swing.*;
importjavax.swing.GroupLayout.Alignment;
classrandomtimu
{
doublex1;
doublex2;
charyunsuan;
finalchar[]Yun=newchar[]{'+','-','*','/'};
doubleresult;
StringerrorString="";
publicrandomtimu()
{
x1=Math.random()*100;
x2=Math.random()*100;
yunsuan=Yun[(int)(Math.random()*4)];
switch(yunsuan)
{
case'+':
result=x1+x2;
break;
case'-':
result=x1-x2;
break;
case'*':
result=x1*x2;
break;
case'/':
if(x2==0)
{
errorString="error";
}
else{
result=x1/x2;
}
break;
default:
break;
}
}
}
publicclasstest6extendsJFrame
{
privateJPanelcontentPane;
JTextFieldjTextField=newJTextField(10);
JTextFieldjTextField3=newJTextField(10);
JTextFieldjTextField4=newJTextField(10);
JLabeljLabel=newJLabel("+",JLabel.CENTER);
JLabeljLabel2=newJLabel("=",JLabel.CENTER);
JLabeljLabel3=newJLabel("");
doubleresult=0;
publicstaticvoidmain(String[]args)
{
newtest6().setVisible(true);
}
/**
*CreatetheFrame.
*/
publictest6()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Containercontainer=getContentPane();
setBounds(500,100,600,150);
setLayout(newBorderLayout());
JPaneljPanel=newJPanel();
jPanel.setLayout(newFlowLayout(FlowLayout.CENTER,10,10));
JPaneljPanel2=newJPanel();
JButtonjButton2=newJButton("确认答案");
jPanel2.add(jButton2);
JButtonjButton=newJButton("获取题目");
jPanel.add(jButton);
jPanel.add(jTextField3);
jTextField3.setSize(20,10);
jPanel.add(jLabel);
jLabel2.setFont(newFont("黑体",Font.BOLD,18));
jPanel.add(jTextField);
jPanel.add(jLabel2);
jLabel.setFont(newFont("黑体",Font.BOLD,18));
jPanel.add(jTextField4);
container.add(jPanel,BorderLayout.NORTH);
container.add(jPanel2);
jPanel2.add(jLabel3);
jButton.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
randomtimurandomtimu1=newrandomtimu();
jTextField4.setText("");
jLabel3.setText("");
jTextField3.setText(String.format("%.2f",randomtimu1.x1));
jTextField.setText(String.format("%.2f",randomtimu1.x2));
jLabel.setText(randomtimu1.yunsuan+"");
if(randomtimu1.errorString.equals("error"))
{
JOptionPane.showMessageDialog(null,"除数不能为零");
}
else{
result=randomtimu1.result;
}
}
});
jButton2.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
if(jTextField4.getText().equals("")||jTextField4.getText()==null)
{
JOptionPane.showMessageDialog(null,"答案不能为空");
}
else{
doublestring=Double.parseDouble(jTextField4.getText());
Stringanswer="正确结果是"+String.format("%.2f",result);
if(Math.abs(string-result)<0.01)
{
answer="答案正确"+answer;
}
else{
answer="答案错误"+answer;
}
jLabel3.setText(answer);
}
}
});
}
}
2、运动的迷你小车外加图像放大功能
importjava.awt.BorderLayout;
importjava.awt.Canvas;
importjava.awt.Container;
importjava.awt.FlowLayout;
importjava.awt.Graphics;
importjava.awt.Graphics2D;
importjava.awt.Image;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JSlider;
importjavax.swing.WindowConstants;
importjavax.swing.event.ChangeEvent;
importjavax.swing.event.ChangeListener;
publicclassdrawcarextendsJFrame
{Graphicsg;
Containercontainer;
JSliderjsliter11=newJSlider();
ImageIconicon=newImageIcon("http:
//10.102.14.234:
8080/Classic_Car_Icons_005.png");
//我笔记本Tomcat服务器的照片;
Imageimg=icon.getImage();
JButtonjButton1=newJButton("开始");
JButtonjButton2=newJButton("暂停");
drawpicturedra;
intx1=0;
inty1=0;
Booleanflag=true;
publicdrawcar()
{
picture();
}
publicvoidpicture()
{
jsliter11.setMaximum(100);
jsliter11.setMinimum
(1);
jsliter11.setValue(5);
dra=newdrawpicture();
jsliter11.addChangeListener(newjavax.swing.event.ChangeListener()
{
publicvoidstateChanged(javax.swing.event.ChangeEvente)
{
dra.repaint();
}
});
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setBounds(500,50,500,500);
container=getContentPane();
setTitle("迷你小车(黄开浪)");
container.add(dra,BorderLayout.CENTER);
container.add(jsliter11,BorderLayout.NORTH);
JPaneljpanel2=newJPanel();
jpanel2.setLayout(newFlowLayout(10,10,10));
jpanel2.add(jButton1);jpanel2.add(jButton2);
container.add(jpanel2,BorderLayout.SOUTH);
jButton1.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
flag=true;
Threadthread=newThread(newRunnable()
{
@Override
publicvoidrun()
{
while(flag)
{
if(x1<500)
{
x1=x1+20;
}
else{
x1=0;
}
try{
Thread.sleep(100);
}
catch(InterruptedExceptione)
{
//TODO自动生成的catch块
e.printStackTrace();
}
dra.repaint();
}
}
});
thread.start();
}
});
jButton2.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
flag=false;
}
});
}
classdrawpictureextendsCanvas
{
publicvoidpaint(Graphicsg)
{
super.paint(g);
Graphics2Dgd=(Graphics2D)g;
intnewx=0;
intnewy=0;
floatvalue=jsliter11.getValue();
newx=(int)(value*img.getWidth(this)/100);
newy=(int)(value*img.getHeight(this)/100);
//gd.rotate(Math.toRadians(5));
gd.drawImage(img,x1,y1,newx,newy,this);
}
}
publicstaticvoidmain(Stringargs[])
{
newdrawcar().setVisible(true);
}
}
3、
importjava.awt.BorderLayout;
importjava.awt.Canvas;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.FlowLayout;
importjava.awt.Graphics;
importjava.awt.Graphics2D;
importjava.awt.GridLayout;
importjava.awt.Paint;
importjava.awt.Stroke;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTable;
importjavax.swing.WindowConstants;
importjavax.swing.table.DefaultTableModel;
importjavax.swing.table.TableColumn;
importjavax.swing.table.TableColumnModel;
importjavax.swing.text.StyledEditorKit.BoldAction;
publicclasstuiyouextendsJFrame
{
Graphicsg;
JButtonjButton1=newJButton("增加选手");
JButtonjButton3=newJButton("删除选手");
JButtonjButton2=newJButton("画图");
drawpicturedra;
DefaultTableModeldefaultModel=null;
JTablejTable1;
intx;
Stringcol[]={"人数","竞选一号","竞选二号","竞选三号"};
Stringrow[][]={{"人数","竞选一号","竞选二号","竞选三号"},{"票数","100","500","700"}};
publicvoidmain()
{
newtuiyou();
}
/*2编写一个班级推选优秀生的软件,
*可列出参与推优的学生名单,能够显示当前投票人数以及每名候选者得票数,
*如果同时能够图形化显示得票数更佳。
*/
publictuiyou()
{
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("班级推优");
Containercn=getContentPane();
setLayout(newBorderLayout());
setBounds(500,100,850,500);
JPaneljPanel=newJPanel();
jPanel.setLayout(newGridLayout(2,1));
defaultModel=newDefaultTableModel(row,col);
jTable1=newJTable(defaultModel);
jPanel.add(jTable1.getTableHeader());
jPanel.add(jTable1);
cn.add(jTable1,BorderLayout.NORTH);
dra=newdrawpicture();
cn.add(dra,BorderLayout.CENTER);
JPaneljPanel2=newJPanel();
jPanel2.setLayout(newFlowLayout(FlowLayout.CENTER));
jPanel2.add(jButton1);jPanel2.add(jButton3);jPanel2.add(jButton2);
cn.add(jPanel2,BorderLayout.SOUTH);
System.out.println(dra.WIDTH+","+dra.HEIGHT);
x=jTable1.getColumnCount()-1;
jButton1.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
x=x+1;
defaultModel.addColumn("竞选"+(x)+"号");
defaultModel.setValueAt(""+"竞选"+(x)+"号",0,x);
defaultModel.setValueAt("0",1,x);
}
});
jButton2.addActionListener(newActionListener()
{
@Override
publicvoidactionPerformed(ActionEvente)
{
dra.repaint();
}
});
jButton3.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
x=x-1;
intcolumncount=defaultModel.getColumnCount()-1;
if(columncount>=0)//若columncount<0代表已经没有任何列了。
{
TableColumnModelcolumnModel=jTable1.getColumnModel();
TableColumntableColumn=columnModel.getColumn(columncount);
columnModel.remove