(11)
五、实验体会(遇到问题及解决办法,编程后的心得体会)
学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能Java面向对象程序设计是一门实践性比较强的课程在实际中我们必须把理论和实践结合起来。在实验中我们对照课本的知识然后进行实际的操作而后发现实际的运用比课本提到的要多很多理论总是来源于实践我们必须在现有的理论的基础上进行有效地实践。而这次实验也让我看到了现在学习的一个很大弱点就是实践的实践往往很少。在现实社会中我们必须懂得实际的操作才能更好的服务于社会。所以我必须在以后的学习中多动手多实际操作争取能在实践中找到属于自己新的感悟,终于在学习Java时达到了事半功倍的效果。
29
实验项目名称: 图形用户界面 实验学时: 6 同组学生姓名: ———— 实验地点: 工科楼A101 实验日期: 17.5.9~17.5.23 实验成绩: 批改教师: 刘晶 批改时间:
30
实验3 图形用户界面
一、实验目的和要求
(1)掌握Swing组件的使用方法;
(2)熟练掌握Swing中常用布局管理器的使用方法; (3)掌握用户界面动作与事件的处理程序的编写方法; (4)熟练掌握构造用户界面的方法和常见界面元素的使用; (5)熟练掌握Java绘图的主要方法。
(6)调试程序要记录调试过程中出现的问题及解决办法;
(7)编写程序要规范、正确,上机调试过程和结果要有记录,不断积累编程及调试经验;
(8) 做完实验后给出本实验的实验报告。
二、实验仪器和设备
奔腾以上计算机,Windows 操作系统,装有JDK1.6和Eclipse4.2软件。
三、实验过程
1. 计算器设计
2. 整数进制转换
将一个十进制整数分别转换成二进制、八进制和十六进制整数。
3. 模拟裁判评分。
设计如图所示图形界面,显示n个裁判的评分,根据制定规则计算出最后得分。要求:图形界面采用表格显示裁判评分,随裁判人数变化而变化;指定分数范围,若超出,则异常处理;
31
得分规则有指定接口约定,由多个接口对象给出多种得分规则,如求平均数值,或去掉一个最高分和一个最低分后,再求平均值。
4. 编译运行下例,然后修改程序,当使用鼠标单击后在另一位置重新绘制月亮。 【例】 在Applet中画月亮。 import java.awt.*;
import java.applet.Applet;
public class MoonApplet extends Applet {
public void paint(Graphics g) //在Applet上绘图 {
g.setColor(Color.red);
g.drawString(\
int x=0,y=0; //圆外切矩形左上角坐标 x = this.getWidth() /4; y = this.getHeight() /4;
int diameter = 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); //画圆 } }
5.根据阿基米德螺线的极坐标方程:r=aθ画出相应图形。
要求:
(1)注意选用适当的布局管理器设计图形用户界面,比较它们的布局情况;
(2)养成良好的编程习惯,严格按照命名规则为包、类及类成员命名,将每个程序打包,包的命名方式如three.num1表示实验三的第一题; (3)学会使用Eclipse的各种调试方法;
(4)学会查阅Java API文档,如查找事件类的处理里方法。
程序清单:
(建议程序中适当添加注释信息,增强可读性;较长程序可分栏书写,保证报告排版整洁美观。)
1.import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.*; import javax.swing.*;
32
public class Calulator implements ActionListener { JTextField t1; JPanel p1; JFrame f;
static int count=1; static float value=0; int p2=0; String p; public Calulator()
{f=new JFrame(\ f.setSize(400,200); p1=new JPanel();
t1=new JTextField(30);
t1.setHorizontalAlignment(JTextField.RIGHT); p1.setLayout(new GridLayout(5,4)); f.add(t1); String str[]=
{\开根\清零\负\正\ for(int i=0;i<20;i++)
{JButton b=new JButton(str[i]); p1.add(b);
b.addActionListener(this);}
f.add(t1,BorderLayout.CENTER); f.add(p1,BorderLayout.SOUTH);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true);}
public void actionPerformed(ActionEvent e){ String c = e.getActionCommand();
if(c==\=\
{if(p2==0) {t1.setText(c);p2++;}
else {t1.setText(t1.getText()+c); p2++;}}
else if(p==\清零\else {count++; p2=0;
if(count==2 ) {p=c;value=Float.parseFloat(t1.getText());} if(c==\if(p==\开根\
{value=(float)Math.sqrt(Float.parseFloat(t1.getText())); t1.setText(String.valueOf(value));count-=2; } else
if(p==\ else
if(p==\
33