java实验.docx
- 文档编号:4093305
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:20
- 大小:217.84KB
java实验.docx
《java实验.docx》由会员分享,可在线阅读,更多相关《java实验.docx(20页珍藏版)》请在冰豆网上搜索。
java实验
实验项目名称:
图形用户界面实验学时:
6
同组学生姓名:
————实验地点:
1514/A203
实验日期:
2016.5.4/5.6/5.11实验成绩:
批改教师:
王倩倩批改时间:
一、实验目的和要求
(1)掌握Swing组件的使用方法;
(2)熟练掌握Swing中常用布局管理器的使用方法;
(3)掌握用户界面动作与事件的处理程序的编写方法;
(4)熟练掌握构造用户界面的方法和常见界面元素的使用;
(5)熟练掌握Java绘图的主要方法。
(6)调试程序要记录调试过程中出现的问题及解决办法;
(7)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;
(8)做完实验后给出本实验的实验报告。
二、实验仪器和设备
奔腾以上计算机,Windows操作系统,装有JDK1.7和Eclipse软件。
三、实验过程
1.计算器设计
2.模拟裁判评分。
设计如图所示图形界面,显示n个裁判的评分,根据制定规则计算出最后得分。
要求:
图形界面采用表格显示裁判评分,随裁判人数变化而变化;指定分数范围,若超出,则异常处理;得分规则有指定接口约定,由多个接口对象给出多种得分规则,如求平均数值,或去掉一个最高分和一个最低分后,再求平均值。
3.编译运行下例,然后修改程序,当使用鼠标单击后在另一位置重新绘制月亮。
【例】在Applet中画月亮。
importjava.awt.*;
importjava.applet.Applet;
publicclassMoonAppletextendsApplet
{
publicvoidpaint(Graphicsg)//在Applet上绘图
{
g.setColor(Color.red);
g.drawString("TheMoon",100,20);
intx=0,y=0;//圆外切矩形左上角坐标
x=this.getWidth()/4;
y=this.getHeight()/4;
intdiameter=Math.min(this.getWidth()/2,this.getHeight()/2);//圆的直径
g.setColor(Color.yellow);
g.fillOval(x,y,diameter,diameter);//画圆
g.setColor(this.getBackground());//设置为背景色
g.fillOval(x-20,y-20,diameter,diameter);//画圆
}
}
4.根据阿基米德螺线的极坐标方程:
r=aθ画出相应图形。
要求:
(1)注意选用适当的布局管理器设计图形用户界面,比较它们的布局情况;
(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如three.num1表示实验三的第一题;
(3)学会使用Eclipse的各种调试方法;
(4)学会查阅JavaAPI文档,如查找事件类的处理里方法。
程序清单:
(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。
)
第1题实验代码:
packageshiyan3_1;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
publicclasscalculatorframeextendsJFrameimplementsActionListener
{
privateJTextFieldtext;
privateJButtonbuttons[];
publiccalculatorframe()
{
super("Calculator");
this.setSize(500,300);
this.setLocation(300,240);
this.setDefaultCloseOperation(3);//EXIT_ON_CLOSE
text=newJTextField("",20);
text.setHorizontalAlignment(JTextField.RIGHT);
text.setEditable(false);
this.getContentPane().add(text,"North");
JPanelpanel=newJPanel(newGridLayout(5,4));
this.getContentPane().add(panel,"Center");
Stringstr[]={"sqrt","+/-","Backspace","C","7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};
this.buttons=newJButton[str.length];
for(inti=0;i { buttons[i]=newJButton(str[i]); panel.add(buttons[i]); buttons[i].addActionListener(this); } this.setVisible(true); } publicvoidactionPerformed(ActionEventev) { Stringcurrent=ev.getActionCommand(); if(current.equals("C")) { text.setText("0"); } else if(current.equals("Backspace")) { Stringstr=text.getText().substring(0,text.getText().length()-1); text.setText(str); } else { if(text.getText().equals("0"))//字符串比较要用equals { text.setText(""); } if(! current.equals("=")) { if(current.equals("sqrt")) { Stringstrtemp=text.getText(); doublevalue=Double.parseDouble(strtemp); text.setText(""+Math.sqrt(value)); } else { text.setText(text.getText()+current); } } else { Stringstrtemp=text.getText(); Stringstr1,str2; inti=0; charop; doublevalue=0; /*while(strtemp.charAt(i)! ='+'&&strtemp.charAt(i)! ='-'&&strtemp.charAt(i)! ='*'&&strtemp.charAt(i)! ='/') { System.out.println(strtemp.charAt(i)); } */ for(i=0;i { if(strtemp.charAt(i)=='+'||strtemp.charAt(i)=='-'||strtemp.charAt(i)=='*'||strtemp.charAt(i)=='/') { break; } } str1=strtemp.substring(0,i); op=strtemp.charAt(i); str2=strtemp.substring(i+1); if(op=='+') { value=Double.parseDouble(str1)+Double.parseDouble(str2); } if(op=='-') { value=Double.parseDouble(str1)-Double.parseDouble(str2); } if(op=='*') { value=Double.parseDouble(str1)*Double.parseDouble(str2); } if(op=='/') { value=Double.parseDouble(str1)/Double.parseDouble(str2); } text.setText(""+value); } } } publicstaticvoidmain(Stringargs[]) { newcalculatorframe(); } } 第2题实验代码: packageshiyan3_2; importjava.io.*; importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; importjavax.swing.event.*; importjavax.swing.table.DefaultTableModel; importshiyan2_6.MyException; publicclassanalogscoreextendsJFrameimplementsActionListener,scoreprinciple { privateJTextFieldtext; privateJButtonbutton; privateDefaultTableModeltablemodel; privatedoublea[]; publicanalogscore(doublea[]) { super("模拟裁判评分"); this.setBounds(300,240,780,400); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.a=a; introw; intrest; if(a.length%5! =0) { if(a.length<5) { this.tablemodel=newDefaultTableModel(1,a.length); intt=0,i; for(i=0;i { this.tablemodel.setValueAt(a[t],0,i); t++; } } else { System.out.println("是整行"); row=a.length/5+1; rest=a.length%5; System.out.println(""+row); System.out.println(""+rest); this.tablemodel=newDefaultTableModel(row,5); intt=0,i,j; for(i=0;i {for(j=0;j<5;j++) { this.tablemodel.setValueAt(a[t],i,j); t++; } } for(j=0;j { this.tablemodel.setValueAt(a[t],row-1,j); t++; } } } else { System.out.println("不是整行"); row=a.length/5; this.tablemodel=newDefaultTableModel(row,5); intt=0,i,j; for(i=0;i {for(j=0;j<5;j++) { this.tablemodel.setValueAt(a[t],i,j); t++; } } } JTablejtable=newJTable(this.tablemodel); this.getContentPane().add(jtable,"North"); JPanelpanel=newJPanel(newFlowLayout(FlowLayout.RIGHT)); this.getContentPane().add(panel); button=newJButton("平均分"); panel.add(button); button.addActionListener(this); text=newJTextField("",8); text.setEditable(false); panel.add(text); this.setVisible(true); } publicdoublesp(doublea[]) { doublesum=0; if(a! =null&&a.length>2) { doublemax=a[0],min=a[0]; for(inti=0;i { sum+=a[i]; if(a[i]>max) { max=a[i]; } if(a[i] { min=a[i]; } } return(sum-max-min)/(a.length-2); } return0.0; } publicvoidactionPerformed(ActionEventev) { doublet=this.sp(a); this.text.setText(""+t); } publicstaticvoidmain(Stringarg[]) { try { BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));//建立输入流缓冲区 System.out.println("请输入裁判人数: "); Stringcl=strin.readLine(); intn=Integer.parseInt(cl); System.out.println("请以此输入裁判的分数: "); String[]strArray=newString[n]; for(inti=0;i { strArray[i]=strin.readLine(); if(Double.parseDouble(strArray[i])<0||Double.parseDouble(strArray[i])>10)thrownewMyException(); } doublea[]=newdouble[n]; for(inti=0;i { a[i]=Double.parseDouble(strArray[i]); System.out.println(""+a[i]); //if(a[i]<0||a[i]>10)thrownewMyException(); } newanalogscore(a); } catch(IOExceptionex) { System.out.println("I/O有关的异常"); } catch(NumberFormatExceptionex) { System.out.println("字符串不能转换成整数"); } catch(MyExceptionex) { System.out.println("输入评分超出范围"); } } } 第3题实验代码: packageshiyan3_3_1; importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; importjavax.swing.event.*; publicclassmooncanvasextendsCanvasimplementsMouseListener { privateColorcolor; intx=this.getWidth()/2; inty=this.getHeight()/2; publicmooncanvas() { this.addMouseListener(this); } publicmooncanvas(Colorcolor) { this.setColor(color); } publicvoidsetColor(Colorcolor) { this.color=color; } publicvoidpaint(Graphicsg) { g.setColor(Color.red); g.drawString("TheMoon",300,20);//圆外切矩形左上角坐标 intdiameter=Math.min(this.getWidth()/2,this.getHeight()/2);//圆的直径 g.setColor(Color.yellow); g.fillOval(x,y,diameter,diameter);//画圆 g.setColor(this.getBackground());//设置为背景色 g.fillOval(x-20,y-20,diameter,diameter);//画圆 } publicvoidmousePressed(MouseEvente) { x=e.getX(); y=e.getY(); repaint(); } publicvoidmouseReleased(MouseEvente){} publicvoidmouseEntered(MouseEvente){} publicvoidmouseExited(MouseEvente){} publicvoidmouseClicked(MouseEvente) { x=e.getX(); y=e.getY(); repaint(); } /*publicvoidupdate(Graphicsg) { paint(g); super.update(g); } */ } packageshiyan3_3_1; importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; importjavax.swing.event.*; publicclassMoonJframeextendsJFrame { privatemooncanvascanvas; publicMoonJframe() { super("月亮"); Dimensiondim=this.getToolkit().getScreenSize();this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.canvas=newmooncanvas();this.getContentPane().add(this.canvas,"Center"); this.setVisible(true) } publicstaticvoidmain(Stringargs[]) { newMoonJframe(); } } 第4题实验代码: packageshiyan3_4; importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; publicclassarchimedeslinejframeextendsJFrameimplementsActionListener { privateArchimedesCanvasarchimedes; privateJButtonbutton_color; publicarchimedeslinejframe() { super("阿基米德螺线"); Dimensiondim=getToolkit().getScreenSize(); this.setBounds(dim.width/4,dim.height/4,dim.width/2,dim.height/2); this.setDefaultCloseOperation(EXIT_ON_CLOSE); button_color=newJButton("选择颜色"); this.getContentPane().add(butto
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验