使用java swing 代码制作的一个简易版本的计算器,代码由本人亲自写出,如有算法雷同,确实是巧合。 写计算器除了有javaswing技术之外,还需要一些逻辑思维,所以,逻辑思维是每个人都有的,每个人写出的代码都会有所不同,这里的算法供大家参考。
package ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
/**
* 计算器
* @author liandyao
*
*/
public class CalcFrameTest extends JFrame{
   
    /**
    * 计算器窗体的宽度
    */
    public final static int JF_WIDTH= 300 ;
   
    /**
    * 计算器窗体的高度
    */
    public final static int JF_HEIGHT= 300 ;
   
    /**
    * 按钮的宽度
    */
    public final static int BT_WIDTH= 50 ;
   
    /**
    * 按钮的高度
    */
    public final static int BT_HEIGHT= 30 ;
   
    /**
    * 使用的字体
    */
    public final static Font font =
        new Font("微软雅黑", Font.BOLD, 20);
   
    /**
    * 数字事件监听类
    */
    NumberActionListener numberListenere =
                        new NumberActionListener();
   
    /**
    * 符号事件监听类
    */
    OpertorActionListener opertorActionListener =
                        new OpertorActionListener() ;
   
    /**
    * 面板容器
    */
    Container c = null ; javaswing实现购买//面板容器
   
   
   
    /**
    * 计算器的显示数字的文本框
    */
    JTextField jfNumber ; //计算器的显示数字的文本框
   
    /**
    * 运算符号
    */
    String op = "=" ;
   
    boolean isOp = false; //定义一个变量,用来区分是否已经点击了符号。默认设置为否
   
    /**
    * 每次运算的结果
    */
    double result = 0 ; 
   
    public CalcFrameTest(){
        this.setTitle("计算器");
        this.setSize(300, 300) ;
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
        this.setLocationRelativeTo(null) ;//设置在屏幕的中心
        this.setResizable(false) ;
        c = this.getContentPane() ;
        c.setLayout(null) ;
        init(); //初始化界面
        this.setVisible(true) ;
    }
   
    /**
    * 初始化界面
    */
    public void init(){
        jfNumber = new JTextField() ;
        jfNumber.setBounds(10, 5, JF_WIDTH-20, 30) ;
        c.add(jfNumber) ;
       
        /**
        * 第一行排列
        */
        JButton jb7 = new JButton("7") ;
        jb7.setBounds(30, 70, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb7.addActionListener(numberListenere) ;
       
        c.add(jb7) ;
       
        JButton jb8 = new JButton("8") ;
        jb8.setBounds(90, 70, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb8.addActionListener(numberListenere) ;
       
        c.add(jb8) ;
       
        JButton jb9 = new JButton("9") ;
        jb9.setBounds(150, 70, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb9.addActionListener(numberListenere) ;
       
        c.add(jb9) ;
       
        /**
        * 运算符+号出现的地方
        */
        JButton jb_jia = new JButton("+") ;
        jb_jia.setFont(font) ;
        jb_jia.setBounds(210, 70, BT_WIDTH, BT_HEIGHT) ;
        //加入事件
        jb_jia.addActionListener(opertorActionListener) ;
        c.add(jb_jia) ;
        /**
        * +号结束
        */
       
       
       
        /**
        * 第2行排列
        */
        JButton jb4 = new JButton("4") ;
        jb4.setBounds(30, 110, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb4.addActionListener(numberListenere) ;
       
        c.add(jb4) ;
       
        JButton jb5 = new JButton("5") ;
        jb5.setBounds(90, 110, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb5.addActionListener(numberListenere) ;
       
        c.add(jb5) ;
       
        JButton jb6 = new JButton("6") ;
        jb6.setBounds(150, 110, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb6.addActionListener(numberListenere) ;
       
        c.add(jb6) ;
       
        /**
        * 运算符-号出现的地方
        */
        JButton jb_jian = new JButton("-") ;
        jb_jian.setBounds(210, 110, BT_WIDTH, BT_HEIGHT) ;
        //加入事件
        jb_jian.addActionListener(opertorActionListener) ;
       
        jb_jian.setFont(font) ;
        c.add(jb_jian) ;
        /**
        * -号结束
        */
       
       
        /**
        * 第3行排列
        */
        JButton jb1 = new JButton("1") ;
        jb1.setBounds(30, 150, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb1.addActionListener(numberListenere) ;
       
        c.add(jb1) ;
       
        JButton jb2 = new JButton("2") ;
        jb2.setBounds(90, 150, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb2.addActionListener(numberListenere) ;
       
        c.add(jb2) ;
       
        JButton jb3 = new JButton("3") ;
        jb3.setBounds(150, 150, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb3.addActionListener(numberListenere) ;
       
        c.add(jb3) ;
       
        /**
        * 运算符*号出现的地方
        */
        JButton jb_cheng = new JButton("*") ;
        jb_cheng.setFont(font);
        jb_cheng.setBounds(210, 150, BT_WIDTH, BT_HEIGHT) ;
        //加入事件
        jb_cheng.addActionListener(opertorActionListener) ;
       
        c.add(jb_cheng) ;
        /**
        * *号结束
        */
       
        /**
        * 第4行排列
        */
        //第一个空缺
        JButton jb_dian = new JButton("C") ;
        jb_dian.setBounds(30, 190, BT_WIDTH, BT_HEIGHT) ;
        jb_dian.addActionListener(numberListenere) ;
        c.add(jb_dian) ;
       
        //第二个开始
        JButton jb0 = new JButton("0") ;
        jb0.setBounds(90, 190, BT_WIDTH, BT_HEIGHT) ;
        //加入数字按钮事件
        jb0.addActionListener(numberListenere) ;
       
        c.add(jb0) ;
       
        JButton jb_dy = new JButton("=") ;
        jb_dy.setFont(font);
        jb_dy.setBounds(150, 190, BT_WIDTH, BT_HEIGHT) ;
        //加入事件
        jb_dy.addActionListener(opertorActionListener) ;
       
        c.add(jb_dy) ;
       
        /**
        * 运算符/号出现的地方
        */
        JButton jb_chu = new JButton("/") ;
        jb_chu.setFont(font);
        jb_chu.setBounds(210, 190, BT_WIDTH, BT_HEIGHT) ;
        //加入事件
        jb_chu.addActionListener(opertorActionListener) ;
       
        c.add(jb_chu) ;
        /**
        * /号结束
        */
       
       
    }
   
    /**
    * 这个是数字的按钮事件
    * @author Administrator
    *
    */
    class NumberActionListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            JButton j = (Source() ; //事件的源
            String text = j.getText() ; //获取到点击按钮的值
           
           
            if("C".equals(text)){
                jfNumber.setText("0") ;
                return ;
            }
           
            String yuan = jfNumber.getText() ; //之前已经存在的文本保存
           
           
            if(isOp){
                jfNumber.setText(text) ; //将按钮的值设置到文本框中
                isOp = false ;//重新将isOp置为false
            }else{
                jfNumber.setText(yuan+text) ; //将按钮的值设置到文本框中
            }
           
        }
       
    }
   
    /**
    * 这个是符号的按钮事件
    * @author Administrator
    *
    */
    class OpertorActionListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            JButton j = (Source() ; //事件的源
            String text = j.getText() ; //获取到点击按钮的值
            String txt_number = jfNumber.getText() ; //获取到文本框中的数字
            double num = Double.valueOf(txt_number).doubleValue() ;
           
            if("+".equals(op)){
                result += num ;
            }else if("-".equals(op)){
                result -= num ;
               
            }else if("*".equals(op)){
                result *= num ;
            }else if("/".equals(op)){
                result /= num ;
            }else if("=".equals(op)){
                result = num ;
            }
            isOp = true ; //如果点击了符号,则将变量设置为true
           
            op = text ; //将符号赋值给op
           
            jfNumber.setText(result+"") ; //将计算的结果赋值给文本框
        }
       
    }
    /**
    * @param args
    */
    public static void main(String[] args) {
        new CalcFrameTest();
    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。