参考链接: 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 删除。