参考链接: Java程序使用switch ... case创建一个简单的计算器
/*** Created by YunFeng on 2014/12/6 0009.
* Student Number:
* Teacher:Yongfeng Huang
* University:DHU
*Java's homework of No,7 weekend;*/
import java.awt.*;import javax.swing.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;public classICalculator {public static voidmain(String args[]){
WinGrid ICalc= newWinGrid();
ICalc.setTitle("计算器1.0");//程序标题
}
}class WinGrid extendsJFrame {
JPanel calc, screen;//创建两个面板,放置按键和显示器
JButton[] buttons = new JButton[16];//创建16个按键
JButton clear = new JButton("CE");//创建清除键
JTextField screen_txt = new JTextField("0");//创建显示器
String[] str = {"7", "8", "9", "+", "4", "5", "6","-", "1", "2", "3", "*", "0", ".", "=", "/"};//计算器的按钮
double result = 0;//结果
boolean IsClick = false;//是否点击过
char operator = '=';//操作符
boolean IsPoint = false;//输入的是否是小数点
NumberListener numberListener= new NumberListener();//创建一个数字监视器
OperatorListener operatorListener = new OperatorListener();//创建一个操作符监视器
ClearListener clearListener = new ClearListener();//创建一个清零操作监视器
WinGrid() {
calc= new JPanel(new GridLayout(4, 4));
screen= new JPanel(newBorderLayout());/*以上为初始化两个面板布局*/
for (int i = 0; i < 16; i++) {
buttons[i]= newJButton(str[i]);if (i == 3 || i == 7 || i == 11 || i == 14 || i == 15) {
buttons[i].addActionListener(operatorListener);//操作符注册操作符的监视器
} elsebuttons[i].addActionListener(numberListener);//数字及小数点注册数字的监视器
calc.add(buttons[i]);
}//将按钮添加到操作面板
clear.addActionListener(clearListener);//注册清零监视器
screen.add(screen_txt, BorderLayout.CENTER);//将显示器添加到显示区域
screen.add(clear, BorderLayout.EAST);//将清零键添加到显示器右边
add(screen, BorderLayout.NORTH);//将显示器添加到BorderLayout的北方区域,即上方
add(calc, BorderLayout.CENTER);//将操作区添加到中央区域
setBounds(450, 150, 240, 240);//设置计算器大小,位置
setVisible(true);//设置可见性
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置退出方式
validate();//使设置生效(根据课本232页)
}class ClearListener implements ActionListener {//清零计数器的实现
public voidactionPerformed(ActionEvent e) {
screen_txt.setText("");
}
}class NumberListener implements ActionListener {//数字监视器的实现,用于处理数字按钮的监听
public voidactionPerformed(ActionEvent e) {if (!IsClick) {//没有点击过的操作
screen_txt.setText("");
IsClick= true;
}
String s= screen_txt.getText();//读取显示器的内容
s += e.getActionCommand();//显示器内容+鼠标点击的内容
screen_txt.setText(s);//显示器显示s
}
}class OperatorListener implements ActionListener {//操作符监听的实现,用于处理点击操作符的事件
public voidactionPerformed(ActionEvent e) {if (!IsClick) return;//如果数字没有被点击过直接点击操作符,返回
String s = screen_txt.getText();//读取显示器内容
double num = Double.parseDouble(s);//转换成数字
IsClick = false;//点击过操作符后将不能被再次点击操作符
switch (operator) {//处理操作符的运算
case '+': {
result= num +result;break;
}case '-': {
result= result -num;break;
}case '*': {
result*=num ;break;
}case '/': {if (num == 0) result = 0;elseresult/=num;break;
}case '=': {
result=num;break;
}
}
screen_txt.setText(String.valueOf( result));//显示器显示结果
String op = e.getActionCommand();//监听读取操作符
operator = op.charAt(0);//设置操作符
}
}
}
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。