CalcFrame.java
package jsj.java.exam.test10;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
//知识要求:理解 应用
/**
* 计算器窗体类
* 分值 10分
*/
public class CalcFrame extends JFrame {
public static final int WIDTH = 600;
public static final int HEIGHT = 100;
private JTextField firstNumber;
private JTextField secondNumber;
private JTextField result;
private JComboBox operator;
/**
* 完成计算器界面的设计
*/
public CalcFrame() {
this.setTitle("小小计算器");// 直接调用从父类继承下来的方法,设置窗口的标题
Toolkit toolkit = Toolkit.getDefaultToolkit();// 得到本机默认的工具包
Dimension d = toolkit.getScreenSize();// 获取屏幕的尺寸
this.setSize(WIDTH, HEIGHT);// 设置容器的宽度和高度
this.setLocation((d.width - WIDTH) / 2, (d.height - HEIGHT) / 2);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置关闭按钮时退出程序
JLabel prompt = new JLabel("考考你");// 创建标签
setCharacter(prompt);
JPanel centerPanel = new JPanel();// 创建子容器,默认的布局为FlowLayout
firstNumber = new JTextField(10);
setCharacter(firstNumber);
String[] op = { "+", "-", "*", "/" };
operator = new JComboBox(op);// 初始化下拉列表
setCharacter(operator);
secondNumber = new JTextField(10);
setCharacter(secondNumber);
//创建等号按钮
JButton equal = new JButton(" = ");
setCharacter(equal);
//TODO监听等号按钮上的事件,当用户按下此按钮时,进行相应的+-*/处理
//可以采用内部类或者匿名内部类的形式实现,可以调用下面的compute()方法
equal.addActionListener(new ActionListener() {//--4
@Override
public void actionPerformed(ActionEvent e) {//--2
compute();//--2
}
});
result = new JTextField(15);// 存放结果的文本框
setCharacter(result);
centerPanel.add(firstNumber);
centerPanel.add(operator);
centerPanel.add(secondNumber);
centerPanel.add(equal);
centerPanel.add(result);
this.add(prompt, "North");// this.add(prompt,BorderLayout.NORTH);这种方式也可以
this.add(centerPanel);// 默认添加到中央区域
this.pack();// 紧凑排列组件
//TODO 设置窗体的可见性
this.setVisible(true);//--2
}
public void setCharacter(JComponent c) {
c.setFont(new Font("黑体", Font.BOLD, 20));
}
/**
* 进行运算的方法
*/
private void compute() {
String first = firstNumber.getText();
String second = secondNumber.getText();
int firstNum = Integer.parseInt(first);
int secondNum = Integer.parseInt(second);
char op = ((String) (operator.getSelectedItem())).charAt(0);
CalcBiz calcBiz = new CalcBiz ();
String results = calcBiz.calculate(firstNum, secondNum, op);
result.setText(results);
}
public static void main(String[] args) {
CalcFrame calcFrame=new CalcFrame();
}
}
CalcBiz.java
package bzu.java.exam.test10;
/**
* 计算器的功能。
*/
public class CalcBiz {
public String calculate(int firstNumber,int secondNumber,char op){
String result=" ";
switch(op){
case '+':result=result+(firstNumber+secondNumber);break;
case '-':result=result+(firstNumber-secondNumber);break;
case '*':result=result+(firstNumber*secondNumber);break;
case '/':if(secondNumber!=0)
result=result+(firstNumber/secondNumber);
else
result=result+"除数不能为0";
}
return result;
}
}