免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1146 | 回复: 0
打印 上一主题 下一主题

java_简单计算器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-23 22:36 |只看该作者 |倒序浏览

主框架程序
package com.picc.chen.calculator;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Rectangle;
import java.awt.GridLayout;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* Title: 简单计算器
*
* Description:
*
* Copyright: Copyright (c) 2007
*
* Company: PICC
*
* @author chen
* @version 1.0
*/
public class CalculatorFrame extends JFrame {
    JPanel contentPane;
    JTextField txtResult = new JTextField();
    JPanel jPanel1 = new JPanel();
    GridLayout gridLayout1 = new GridLayout();
    JButton btn7 = new JButton();
    JButton btn8 = new JButton();
    JButton btn2 = new JButton();
    JButton btn3 = new JButton();
    JButton btn9 = new JButton();
    JButton btn0 = new JButton();
    JButton btnmultiply = new JButton();
    JButton btn4 = new JButton();
    JButton btndivide = new JButton();
    JButton btn6 = new JButton();
    JButton btn5 = new JButton();
    JButton btnclear = new JButton();
    JButton btn1 = new JButton();
    JButton btnminus = new JButton();
    JButton btnequal = new JButton();
    JButton btnplus = new JButton();
    boolean flag=false;    //标志flag,初始化为false
    String oper1;          //第一个操作数
    String oper2;          //第二个操作数
    int result;            //计算结果
    String action;
    public CalculatorFrame() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(null);
        setSize(new Dimension(400, 300));
        setTitle("计算器");
        txtResult.setBounds(new Rectangle(49, 25, 294, 27));
        jPanel1.setBounds(new Rectangle(47, 68, 295, 193));
        jPanel1.setLayout(gridLayout1);
        gridLayout1.setColumns(4);
        gridLayout1.setRows(4);
        btn7.setText("7");
        btn7.addActionListener(new CalculatorFrame_btn7_actionAdapter(this));
        btn8.setText("8");
        btn8.addActionListener(new CalculatorFrame_btn8_actionAdapter(this));
        btn2.setText("2");
        btn2.addActionListener(new CalculatorFrame_btn2_actionAdapter(this));
        btn3.setText("3");
        btn3.addActionListener(new CalculatorFrame_btn3_actionAdapter(this));
        btn9.setText("9");
        btn9.addActionListener(new CalculatorFrame_btn9_actionAdapter(this));
        btn0.setText("0");
        btn0.addActionListener(new CalculatorFrame_btn0_actionAdapter(this));
        btnmultiply.setText("*");
        btnmultiply.addActionListener(new
                                      CalculatorFrame_btnmultiply_actionAdapter(this));
        btn4.setText("4");
        btn4.addActionListener(new CalculatorFrame_btn4_actionAdapter(this));
        btndivide.setText("/");
        btndivide.addActionListener(new CalculatorFrame_btndivide_actionAdapter(this));
        btn6.setText("6");
        btn6.addActionListener(new CalculatorFrame_btn6_actionAdapter(this));
        btn5.setText("5");
        btn5.addActionListener(new CalculatorFrame_btn5_actionAdapter(this));
        btnclear.setText("C");
        btnclear.addActionListener(new CalculatorFrame_btnclear_actionAdapter(this));
        btn1.addActionListener(new CalculatorFrame_btn1_actionAdapter(this));
        btnminus.setText("-");
        btnminus.addActionListener(new CalculatorFrame_btnminus_actionAdapter(this));
        btnequal.setText("=");
        btnequal.addActionListener(new CalculatorFrame_btnequal_actionAdapter(this));
        btnplus.setText("+");
        btnplus.addActionListener(new CalculatorFrame_btnplus_actionAdapter(this));
        btn1.setText("1");
        contentPane.add(txtResult);
        contentPane.add(jPanel1);
        jPanel1.add(btn7);
        jPanel1.add(btn8);
        jPanel1.add(btn9);
        jPanel1.add(btndivide);
        jPanel1.add(btn4);
        jPanel1.add(btn5);
        jPanel1.add(btn6);
        jPanel1.add(btnmultiply);
        jPanel1.add(btn1);
        jPanel1.add(btn2);
        jPanel1.add(btn3);
        jPanel1.add(btnminus);
        jPanel1.add(btn0);
        jPanel1.add(btnclear);
        jPanel1.add(btnequal);
        jPanel1.add(btnplus);
    }
//按钮1方法
    public void btn1_actionPerformed(ActionEvent e) {      //按钮1按下时文本框显示按钮的命令字符串*/
if(flag){                                      
txtResult.setText(btn1.getActionCommand());  //接受按下的第一个命令字符串
    flag=false;                              //*作用很重要,接受第一个之后转变执行else后的语句  
}else{                                           //当按下操作符时执行的语句
txtResult.setText(txtResult.getText()+btn1.getActionCommand());//接受连接输入的数字字符串
}
    }
//按钮2
    public void btn2_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn2.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn2.getActionCommand());
}
    }
    //按钮3
    public void btn3_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn3.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn3.getActionCommand());
     }
    }
    //按钮4
    public void btn4_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn4.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn4.getActionCommand());
    }
    }
    //按钮4
    public void btn5_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn5.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn5.getActionCommand());
       }
    }
    //按钮6
    public void btn6_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn6.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn6.getActionCommand());
       }
    }
    //按钮7
    public void btn7_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn7.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn7.getActionCommand());
       }
    }
    //按钮8
    public void btn8_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn8.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn8.getActionCommand());
        }
    }
    //按钮9
    public void btn9_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn9.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn9.getActionCommand());
        }
    }
    //按钮0
    public void btn0_actionPerformed(ActionEvent e) {
        if(flag){
        txtResult.setText(btn0.getActionCommand());
            flag=false;
        }else{
        txtResult.setText(txtResult.getText()+btn0.getActionCommand());
        }
    }
    //按钮+
    public void btnplus_actionPerformed(ActionEvent e) {
    //oper1=Integer.parseInt(txtResult.getText());
    action="plus";                       //当操作符+按下时,将"plus"赋予字符串变量action
    oper1=txtResult.getText();           //将文本框中的值以字符串的形式赋予oper1
    //this.txtResult.setText("");         //将文本框的字符清零
    flag=true;                          //操作符改为true
    }
    public void btndivide_actionPerformed(ActionEvent e) {
        action="divide";                    //操作符/按下时执行的语句
        oper1=txtResult.getText();          //将第一次输入的文本框中的字符串值赋予oper1
        //this.txtResult.setText("");
        flag=true;
    }
    public void btnclear_actionPerformed(ActionEvent e) {
    txtResult.setText("");                 //操作符C按下时将文本框中的字符清零
    }
    public void btnminus_actionPerformed(ActionEvent e) {
                action="minus";              //操作符-按下时执行的语句
                oper1=txtResult.getText();
               // this.txtResult.setText("");
                flag=true;
    }
    public void btnmultiply_actionPerformed(ActionEvent e) {
               action="multiply";           //操作符x按下时执行的语句
                oper1=txtResult.getText();
                flag=true;
    }
    public void btnequal_actionPerformed(ActionEvent e) {     //操作符=按下的操作
int  digit1;               
int  digit2;
       oper2=txtResult.getText();  //将文本框中的字符串赋予oper2
       if(flag==false){                     
       if(action.equals("divide")){   //如果字符串action的值为divide执行的操作除法操作
       digit1=Integer.parseInt(oper1);//将oper1字符串值转换为整形数,并赋予digit1
       digit2=Integer.parseInt(oper2);//将oper1字符串值转换为整形数,并赋予digit1
       result=digit1/digit2;
       txtResult.setText(new Double(result).toString());
       flag=true;
       }else if(action.equals("plus")){//如果字符串action的值为plus执行的操作加法操作
       digit1=Integer.parseInt(oper1);
       digit2=Integer.parseInt(oper2);
       result=digit1+digit2;
       txtResult.setText(""+(int)result);
       flag=true;
       }else if(action.equals("multiply")){//如果字符串action的值为multiply执行的操作乘法操作
       digit1=Integer.parseInt(oper1);
       digit2=Integer.parseInt(oper2);
       result=digit1*digit2;
       txtResult.setText(""+(int)result);
       flag=true;
       }else if(action.equals("minus")){//如果字符串action的值为minus执行的操作减法操作
       digit1=Integer.parseInt(oper1);
       digit2=Integer.parseInt(oper2);
       result=digit1-digit2;
       txtResult.setText(""+(int)result);
       flag=true;
       }
       }else{
       txtResult.setText(oper1);
       }
         
        }
    }
//以下为各个按钮的事件监听器类
class CalculatorFrame_btnequal_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btnequal_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btnequal_actionPerformed(e);
    }
}
class CalculatorFrame_btnmultiply_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btnmultiply_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btnmultiply_actionPerformed(e);
    }
}
class CalculatorFrame_btnminus_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btnminus_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btnminus_actionPerformed(e);
    }
}
class CalculatorFrame_btnclear_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btnclear_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btnclear_actionPerformed(e);
    }
}
class CalculatorFrame_btndivide_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btndivide_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btndivide_actionPerformed(e);
    }
}
class CalculatorFrame_btnplus_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btnplus_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btnplus_actionPerformed(e);
    }
}
class CalculatorFrame_btn0_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn0_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn0_actionPerformed(e);
    }
}
class CalculatorFrame_btn9_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn9_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn9_actionPerformed(e);
    }
}
class CalculatorFrame_btn8_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn8_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn8_actionPerformed(e);
    }
}
class CalculatorFrame_btn7_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn7_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn7_actionPerformed(e);
    }
}
class CalculatorFrame_btn6_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn6_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn6_actionPerformed(e);
    }
}
class CalculatorFrame_btn5_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn5_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn5_actionPerformed(e);
    }
}
class CalculatorFrame_btn4_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn4_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn4_actionPerformed(e);
    }
}
class CalculatorFrame_btn3_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn3_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn3_actionPerformed(e);
    }
}
class CalculatorFrame_btn2_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn2_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn2_actionPerformed(e);
    }
}
class CalculatorFrame_btn1_actionAdapter implements ActionListener {
    private CalculatorFrame adaptee;
    CalculatorFrame_btn1_actionAdapter(CalculatorFrame adaptee) {
        this.adaptee = adaptee;
    }
    public void actionPerformed(ActionEvent e) {
        adaptee.btn1_actionPerformed(e);
    }
}
主程序
package com.picc.chen.calculator;
import java.awt.Toolkit;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import java.awt.Dimension;
/**
* Title: 简单计算器
*
* Description:
*
* Copyright: Copyright (c) 2007
*
* Company: PICC
*
* @author chen
* @version 1.0
*/
public class Calculator {
    boolean packFrame = false;
    /**
     * Construct and show the application.
     */
    public Calculator() {
        CalculatorFrame frame = new CalculatorFrame();
        // Validate frames that have preset sizes
        // Pack frames that have useful preferred size info, e.g. from their layout
        if (packFrame) {
            frame.pack();
        } else {
            frame.validate();
        }
        // Center the window
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
            frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
            frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2,
                          (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
    }
    /**
     * Application entry point.
     *
     * @param args String[]
     */
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.
                                             getSystemLookAndFeelClassName());
                } catch (Exception exception) {
                    exception.printStackTrace();
                }
                new Calculator();
            }
        });
    }
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/39160/showart_308193.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP