1、开课试验室:现代信息交流中心40* 开课时间: 2023年**月**日 试验汇报: 年 月 日 学院名称 年级、专业、班 学号 姓名 同组姓名 无 课程名称 Java程序设计 试验项目名称 四、Java图形顾客界面开发 指导教师 尉斌 试验类型 验证 □ 综合 □ 设计 √ 创新 □ 成绩 教师评语 教师签名:
2、 年 月 日 一、 试验目旳:熟悉Java图形顾客界面旳开发原理与技术,包括多种组件和容器技术。 二、 试验内容: 编写一种简易实用旳计算器。 三、 源代码清单: package exp3; import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.GridLayout; i
3、mport java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; class Result extends Panel { TextField tf; Result() { tf = new TextField("0", 25); add(tf); } } class Key extends Panel { Button backSpace, clearEnter,
4、cancel,lBracket,rBracket; Button one, two, three, four, five, six, seven, eight, nine, zero; Button add, subtract, multiplay, divide; Button sqrt, reciprocal, mod; Button positiveAndNegative, point, equal; Key() { setLayout(new GridLayout(5, 5)); backSpace = new Button("←"); bac
5、kSpace.setForeground(new Color(255, 0, 0)); add(backSpace); clearEnter = new Button("CE"); clearEnter.setForeground(new Color(255, 0, 0)); add(clearEnter); cancel = new Button("C"); cancel.setForeground(new Color(255, 0, 0)); add(cancel); lBracket =new Button("(
6、"); add(lBracket); rBracket =new Button(")"); add(rBracket); seven = new Button("7"); add(seven); eight = new Button("8"); add(eight); nine = new Button("9"); add(nine); divide = new Button("/"); add(divide); sqrt = new Button("sqrt"); add(sqrt);
7、 four = new Button("4"); add(four); five = new Button("5"); add(five); six = new Button("6"); add(six); multiplay = new Button("*"); add(multiplay); mod = new Button("%"); add(mod); one = new Button("1"); add(one); two = new Button("2"); add(two
8、); three = new Button("3"); add(three); subtract = new Button("-"); add(subtract); reciprocal = new Button("1/x"); add(reciprocal); zero = new Button("0"); add(zero); positiveAndNegative = new Button("+/-"); add(positiveAndNegative); point = new Button(".
9、"); add(point); add = new Button("+"); add(add); equal = new Button("="); add(equal); } } public class Calculator extends Applet implements ActionListener { Result result = new Result(); Key key = new Key(); boolean isInit = true; String operation = ""; float t
10、heFirstNum = 0; float theSecondNum = 0; float f = 0;// 用于括号计算时旳使用 String s="";// 用于括号计算时旳使用 public void init() { setLayout(new BorderLayout()); add("North", result); add("Center", key); key.add.addActionListener(this); key.divide.addActionListener(this); key
11、eight.addActionListener(this); key.equal.addActionListener(this); key.five.addActionListener(this); key.four.addActionListener(this); key.mod.addActionListener(this); key.multiplay.addActionListener(this); key.nine.addActionListener(this); key.one.addActionListener(this); ke
12、y.point.addActionListener(this); key.positiveAndNegative.addActionListener(this); key.reciprocal.addActionListener(this); key.seven.addActionListener(this); key.six.addActionListener(this); key.sqrt.addActionListener(this); key.subtract.addActionListener(this); key.three.addActi
13、onListener(this); key.two.addActionListener(this); key.zero.addActionListener(this); key.backSpace.addActionListener(this); key.cancel.addActionListener(this); key.clearEnter.addActionListener(this); key.lBracket.addActionListener(this); key.rBracket.addActionListener(this); }
14、 public void actionPerformed(ActionEvent e) { if (e.getSource() == key.one) { if (isInit) { result.tf.setText("1"); isInit = false; } else { result.tf.setText(result.tf.getText() + "1"); } } if (e.getSource() == key.two) { if (isInit) { resul
15、t.tf.setText("2"); isInit = false; } else { result.tf.setText(result.tf.getText() + "2"); } } if (e.getSource() == key.three) { if (isInit) { result.tf.setText("3"); isInit = false; } else { result.tf.setText(result.tf.getText() + "3"); } }
16、 if (e.getSource() == key.four) { if (isInit) { result.tf.setText("4"); isInit = false; } else { result.tf.setText(result.tf.getText() + "4"); } } if (e.getSource() == key.five) { if (isInit) { result.tf.setText("5"); isInit = false; } else {
17、 result.tf.setText(result.tf.getText() + "5"); } } if (e.getSource() == key.six) { if (isInit) { result.tf.setText("6"); isInit = false; } else { result.tf.setText(result.tf.getText() + "6"); } } if (e.getSource() == key.seven) { if (isInit) {
18、 result.tf.setText("7"); isInit = false; } else { result.tf.setText(result.tf.getText() + "7"); } } if (e.getSource() == key.eight) { if (isInit) { result.tf.setText("8"); isInit = false; } else { result.tf.setText(result.tf.getText() + "8"); }
19、 } if (e.getSource() == key.nine) { if (isInit) { result.tf.setText("9"); isInit = false; } else { result.tf.setText(result.tf.getText() + "9"); } } if (e.getSource() == key.zero) { if(result.tf.getText().equals("0")) { } else { result.tf.setTe
20、xt(result.tf.getText() + "0"); } } if (e.getSource() == key.point) { if (result.tf.getText().indexOf(".") == -1) { result.tf.setText(result.tf.getText() + "."); isInit = false; } } if (e.getSource() == key.add) { theFirstNum = Float.parseFloat(result.tf.ge
21、tText()); operation = "add"; isInit = true; } if (e.getSource() == key.subtract) { theFirstNum = Float.parseFloat(result.tf.getText()); operation = "subtract"; isInit = true; } if (e.getSource() == key.multiplay) { theFirstNum = Float.parseFloat(result.tf.getT
22、ext()); operation = "multiplay"; isInit = true; } if (e.getSource() == key.divide) { theFirstNum = Float.parseFloat(result.tf.getText()); operation = "divide"; isInit = true; } if (e.getSource() == key.mod) { theFirstNum = Float.parseFloat(result.tf.getText())
23、 operation = "mod"; isInit = true; } if (e.getSource() == key.sqrt) { theFirstNum = Float.parseFloat(result.tf.getText()); result.tf.setText(String.valueOf((Math.sqrt(theFirstNum)))); isInit = true; } if (e.getSource() == key.reciprocal) { if (result.tf.getTe
24、xt().equals("0")) result.tf.setText("Error"); else { theFirstNum = Float.parseFloat(result.tf.getText()); result.tf.setText(String.valueOf(1 / theFirstNum)); isInit = true; } } if (e.getSource() == key.positiveAndNegative) { if (result.tf.getText().equals("0"
25、)) { } else { if (result.tf.getText().startsWith("-")) result.tf.setText(result.tf.getText().substring(1)); else result.tf.setText("-" + result.tf.getText()); } } if (e.getSource() == key.equal) { theSecondNum = Float.parseFloat(result.tf.getText());
26、 if (operation.equals("")) { result.tf.setText("0"); } if (operation.equals("add")) result.tf.setText(String.valueOf(theFirstNum + theSecondNum)); if (operation.equals("subtract")) result.tf.setText(String.valueOf(theFirstNum - theSecondNum)); if (operation.equals("mu
27、ltiplay")) result.tf.setText(String.valueOf(theFirstNum * theSecondNum)); if (operation.equals("divide")) { if (result.tf.getText().equals("0")) result.tf.setText("Error"); else result.tf.setText(String .valueOf(theFirstNum / theSecondNum)); } if (opera
28、tion.equals("mod")) { if (result.tf.getText().equals("0")) result.tf.setText("Error"); else result.tf.setText(String .valueOf(theFirstNum % theSecondNum)); } isInit = true; theFirstNum = 0; theSecondNum = 0; operation = ""; } if (e.getSou
29、rce() == key.backSpace) { if (result.tf.getText().equals("0")){ }else { if (result.tf.getText().length() == 1) { result.tf.setText("0"); isInit = true; } else result.tf.setText(result.tf.getText().substring(0, result.tf.getText().length() - 1)); }
30、} if (e.getSource() == key.clearEnter) { result.tf.setText("0"); isInit = true; } if (e.getSource() == key.cancel) { result.tf.setText("0"); theFirstNum = 0; theSecondNum = 0; operation = ""; isInit = true; } if (e.getSource() == key.lBracke
31、t) { f = theFirstNum; // 把第一种数赋给f s = operation; // 把运算符号赋给s theFirstNum = 0; theSecondNum = 0; operation = ""; isInit = true; //回到初始化,再次输入旳数值为新旳开始,但文本域内容不变 } if (e.getSource() == key.rBracket) { /** * 同"="触发旳成果大体相似 */ theSecondNum = Float.parseFlo
32、at(result.tf.getText()); if (operation.equals("")) { result.tf.setText("0"); } if (operation.equals("add")) result.tf.setText(String.valueOf(theFirstNum + theSecondNum)); if (operation.equals("subtract")) result.tf.setText(String.valueOf(theFirstNum - theSecondNum));
33、 if (operation.equals("multiplay")) result.tf.setText(String.valueOf(theFirstNum * theSecondNum)); if (operation.equals("divide")) { if (result.tf.getText().equals("0")) result.tf.setText("Error"); else result.tf.setText(String .valueOf(theFirstNum / theSecon
34、dNum)); } if (operation.equals("mod")) { if (result.tf.getText().equals("0")) result.tf.setText("Error"); else result.tf.setText(String .valueOf(theFirstNum % theSecondNum)); } theFirstNum = f; //把f再重新赋给第一种数 operation = s; // 把s再重新赋给运算符号 } } } 四、 运行成果:(给出运行成果贴图)






