zoukankan      html  css  js  c++  java
  • 第二周笔记

    主要是用了按钮Button来作出简易的一个计算器。

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.io.*;
    public class Calculate extends JFrame {
        private String front = "", behind = ""; //分别用于记录加减乘除运算符之前,之后输入的内容
        private String op; //用于记录运算符
        private String re;//用于存储运算结果的字符串格式
        private boolean flag = false; //用于记录是否按下了运算符
        private boolean flag1 = false;//用于判断是否输入了点运算符
        private double result;//用于存储运算结果
        private boolean flag2 = false;//用于判断是否输入了数字
        private boolean flag3 = false;//用于判断是否按下了等号运算符
      
        JPanel contentPane;
      
        JTextField txtResult = new JTextField("0");
        JButton btnNull = new JButton("sqrt");
        JButton btnFour = new JButton("4");
        JButton btnFive = new JButton("5");
        JButton btnSix = new JButton("6");
        JButton btnDecrease = new JButton("-");
        JButton btnBegin = new JButton("C");
        JButton btnOne = new JButton("1");
        JButton btnTwo = new JButton("2");
        JButton btnThree = new JButton("3");
        JButton btnMultiply = new JButton("*");
        JButton btnCancel = new JButton("←");
        JButton btnZero = new JButton("0");
        JButton btnMinus = new JButton("+/-");
        JButton btnPoint = new JButton(".");
        JButton btnDivide = new JButton("/");
        JButton btnEqual = new JButton("=");
        JButton btnIncrease = new JButton("+");
        JButton btnSeven = new JButton("7");
        JButton btnEight = new JButton("8");
        JButton btnNine = new JButton("9");

    public Calculate() {
           try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
                    }
        }

        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(null);
            this.setResizable(false);
            setSize(new Dimension(400, 300));
            setTitle("计算器");
            txtResult.setEnabled(false);
            txtResult.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
            txtResult.setEditable(false);
          
            txtResult.setHorizontalAlignment(SwingConstants.RIGHT);
            txtResult.setBounds(new Rectangle(33, 19, 310, 34));
            btnNull.setBounds(new Rectangle(298, 70, 46, 37));
            btnNull.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
         
         //btnNull.addActionListener(new FrameCalculate_btnNull_actionAdapter(this));
            btnFour.setBounds(new Rectangle(33, 120, 46, 37));
            btnFour.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
          
            btnFive.setBounds(new Rectangle(101, 120, 46, 37));
            btnFive.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
          
            btnSix.setBounds(new Rectangle(167, 119, 46, 37));
            btnSix.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
         
            btnDecrease.setBounds(new Rectangle(234, 120, 46, 37));
            btnDecrease.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
        
            btnBegin.setBounds(new Rectangle(298, 121, 46, 37));
            btnBegin.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));
         
            btnBegin.addActionListener(new Calculate_btnBegin_actionAdapter(this));
            btnOne.setBounds(new Rectangle(33, 172, 46, 37));
            btnOne.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
          
            btnTwo.setBounds(new Rectangle(101, 172, 46, 37));
            btnTwo.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
         
            btnThree.setBounds(new Rectangle(167, 172, 46, 37));
            btnThree.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
         
            btnMultiply.setBounds(new Rectangle(234, 172, 46, 37));
            btnMultiply.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
          
            btnCancel.setBounds(new Rectangle(298, 172, 46, 37));
            btnCancel.setFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
         
           btnCancel.addActionListener(new Calculate_btnCancel_actionAdapter(this));
            btnZero.setBounds(new Rectangle(33, 222, 46, 37));
            btnZero.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
         
            //加载数字0-9的监听事件
            btnZero.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnOne.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnTwo.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnThree.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnFour.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnFive.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnSix.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnSeven.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnEight.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnNine.addActionListener(new Calculate_btnZero_actionAdapter(this));
            btnMinus.setBounds(new Rectangle(101, 222, 46, 37));
            btnMinus.setFont(new java.awt.Font("Dialog", Font.PLAIN, 10));
          
            btnMinus.addActionListener(new Calculate_btnMinus_actionAdapter(this));
            btnPoint.setBounds(new Rectangle(167, 222, 46, 37));
            btnPoint.setFont(new java.awt.Font("Dialog", Font.PLAIN, 30));
            btnPoint.setHorizontalTextPosition(SwingConstants.CENTER);
         
            btnPoint.addActionListener(new Calculate_btnPoint_actionAdapter(this));
            btnDivide.setBounds(new Rectangle(234, 222, 46, 37));
            btnDivide.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
          
            btnEqual.setBounds(new Rectangle(298, 222, 46, 37));
            btnEqual.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
          
            btnEqual.addActionListener(new Calculate_btnEqual_actionAdapter(this));
            btnIncrease.setBounds(new Rectangle(234, 70, 46, 37));
            btnIncrease.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
         
            //加载加减乘除运算符的监听事件
            btnIncrease.addActionListener(new
                                         Calculate_btnIncrease_actionAdapter(this));
            btnDecrease.addActionListener(new
                                          Calculate_btnIncrease_actionAdapter(this));
            btnMultiply.addActionListener(new
                                         Calculate_btnIncrease_actionAdapter(this));
            btnDivide.addActionListener(new
                                        Calculate_btnIncrease_actionAdapter(this));
            btnSeven.setBounds(new Rectangle(33, 70, 46, 37));
            btnSeven.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
         
            btnEight.setBounds(new Rectangle(101, 70, 46, 37));
            btnEight.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
         
            btnNine.setBounds(new Rectangle(167, 70, 46, 37));
            btnNine.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
        
            contentPane.add(btnFive);
            contentPane.add(btnSix);
            contentPane.add(btnDecrease);
            contentPane.add(btnBegin);
            contentPane.add(btnOne);
            contentPane.add(btnTwo);
            contentPane.add(btnThree);
            contentPane.add(btnMultiply);
            contentPane.add(btnCancel);
            contentPane.add(btnMinus);
            contentPane.add(btnPoint);
            contentPane.add(btnDivide);
            contentPane.add(btnEqual);
            contentPane.add(btnEight);
            contentPane.add(btnNine);
            contentPane.add(btnFour);
            contentPane.add(btnSeven);
            contentPane.add(btnIncrease);
            contentPane.add(btnNull);
            contentPane.add(txtResult);
            contentPane.add(btnZero);
        }

    public void btnZero_actionPerformed(ActionEvent e) {
            if (flag) { //如果刚刚按下了运算符
                txtResult.setText("");
                if (flag1) {//判断之前是否输入了点运算符
                    txtResult.setText("0." + e.getActionCommand());
                    flag1 = false;
                } else {
                    txtResult.setText(e.getActionCommand());
                }
                flag2 = true;
            } else {
                int num = txtResult.getText().indexOf(".");
                if (num < 0 && !txtResult.getText().equals("0")) {
                    txtResult.setText(txtResult.getText() + e.getActionCommand());
                } else if (num < 0 && txtResult.getText().equals("0")) {
                    txtResult.setText(e.getActionCommand());
                } else if (num >= 0 && txtResult.getText().equals("0")) {
                    txtResult.setText("0." + e.getActionCommand());
                } else if (num >= 0 && !txtResult.getText().equals("0")) {
                    txtResult.setText(txtResult.getText() + e.getActionCommand());
                }
            }
            flag = false;
            flag3=false;
        }

        public void btnIncrease_actionPerformed(ActionEvent e) {
            if(flag3){
                txtResult.setText(txtResult.getText());
                op = e.getActionCommand(); //得到刚刚按下的运算符
                front = txtResult.getText(); //记录加减乘除运算符之前输入的内容
            }
            else if (flag2) {
                ActionEvent ee = new ActionEvent("qq", 1, "pp");
                btnEqual_actionPerformed(ee);
                op = e.getActionCommand(); //得到刚刚按下的运算符
                front = re;
                flag2 = false;
            } else {
                front = txtResult.getText(); //记录加减乘除运算符之前输入的内容
                op = e.getActionCommand(); //得到刚刚按下的运算符
            }
            flag3=false;
            flag = true; //记录已经按下了加减乘除运算符的其中一个
        }

        public void btnEqual_actionPerformed(ActionEvent e) {
            if(!flag3)//未曾按下等于运算符
                behind = txtResult.getText();
            else
                front = re;
            try {
                double a1 = Double.parseDouble(front);
                double b1 = Double.parseDouble(behind);
                if (op == "+") {
                    result = a1 + b1;
                } else if (op == "-") {
                    result = a1 - b1;
                } else if (op == "*") {
                    result = a1 * b1;
                } else {
                    result = a1 / b1;
                }
                Double r = new Double(result);
                re = r.toString(result);
                txtResult.setText(re);
                } catch (ArithmeticException ce) {
                    txtResult.setText("除数不能为零");
                } catch (Exception ee) {
                }
                if (!flag3)
                    flag3 = true;
        }

        public void btnPoint_actionPerformed(ActionEvent e) {
            int num=txtResult.getText().indexOf(".");
            if(num<0 && !flag)
                txtResult.setText(txtResult.getText()+e.getActionCommand());
            if(flag)
                flag1=true;
        }

        public void btnBegin_actionPerformed(ActionEvent e) {//清零运算符事件处理
            flag=false;
            flag1=false;
            flag2=false;
            flag3=false;
            front="";
            behind="";
            re="";
            txtResult.setText("0");
        }

        public void btnMinus_actionPerformed(ActionEvent e) {//取反运算符事件处理
            if(txtResult.getText().equals("0")){//如果文本框内容为0
                txtResult.setText(txtResult.getText());
            }else if(txtResult.getText().indexOf("-")>=0){//若文本框中含有负号
                String a=txtResult.getText().replaceAll("-","");
                txtResult.setText(a);
            }else if(flag){
                txtResult.setText("0");
            }else{
                txtResult.setText("-"+txtResult.getText());
            }
        }

        public void btnCancel_actionPerformed(ActionEvent e) {//退格事件处理方法
            String str=txtResult.getText();
            if(str.length() == 1){//如文本框中只剩下最后一个字符,将文本框内容置为0
                txtResult.setText("0");
            }
            if(str.length()>1){
                str=str.substring(0,str.length()-1);
                txtResult.setText(str);
            }
        }

        public static void main(String[] args){
            Calculate fc = new Calculate();
            fc.setSize(400,310);
            fc.setLocation(200,150);
            fc.setVisible(true);
        }
    }

    class Calculate_btnCancel_actionAdapter implements ActionListener {
        private Calculate adaptee;
        Calculate_btnCancel_actionAdapter(Calculate adaptee) {
            this.adaptee = adaptee;
        }

        public void actionPerformed(ActionEvent e) {
            adaptee.btnCancel_actionPerformed(e);
        }
    }

    class Calculate_btnMinus_actionAdapter implements ActionListener {
        private Calculate adaptee;
        Calculate_btnMinus_actionAdapter(Calculate adaptee) {
            this.adaptee = adaptee;
        }

        public void actionPerformed(ActionEvent e) {
            adaptee.btnMinus_actionPerformed(e);
        }
    }

    class Calculate_btnBegin_actionAdapter implements ActionListener {
        private Calculate adaptee;
        Calculate_btnBegin_actionAdapter(Calculate adaptee) {
            this.adaptee = adaptee;
        }

        public void actionPerformed(ActionEvent e) {
            adaptee.btnBegin_actionPerformed(e);
        }
    }

    class Calculate_btnPoint_actionAdapter implements ActionListener {
        private Calculate adaptee;
        Calculate_btnPoint_actionAdapter(Calculate adaptee) {
            this.adaptee = adaptee;
        }

        public void actionPerformed(ActionEvent e) {
            adaptee.btnPoint_actionPerformed(e);
        }
    }

    class Calculate_btnEqual_actionAdapter implements ActionListener {
        private Calculate adaptee;
        Calculate_btnEqual_actionAdapter(Calculate adaptee) {
            this.adaptee = adaptee;
        }

        public void actionPerformed(ActionEvent e) {
            adaptee.btnEqual_actionPerformed(e);
        }
    }

    class Calculate_btnIncrease_actionAdapter implements ActionListener {
        private Calculate adaptee;
        Calculate_btnIncrease_actionAdapter(Calculate adaptee) {
            this.adaptee = adaptee;
        }

        public void actionPerformed(ActionEvent e) {
            adaptee.btnIncrease_actionPerformed(e);
        }
    }

    class Calculate_btnZero_actionAdapter implements ActionListener {
        private Calculate adaptee;
        Calculate_btnZero_actionAdapter(Calculate adaptee) {
            this.adaptee = adaptee;
        }

        public void actionPerformed(ActionEvent e) {
            adaptee.btnZero_actionPerformed(e);
        }
    }

    用6*6来对我的计算机进行验算,观察是否可以进行计算。

    得到结果36,证明程序运行成功!

    最后po一张自己照片,温馨提示:怕眼睛看坏的记得戴上黑布。。。

  • 相关阅读:
    LeeCode-Spiral Matrix II
    HDU1281(二分图最大匹配,棋盘建图,找关键点)
    HDU1083(二分图最大匹配vector实现)
    HDU2444(判断是否为二分图,求最大匹配)
    HDU1166(线段树单点更新区间查询)
    HDU1045(二分图经典建模)
    POJ1220(大数进制转换)
    POJ3466(01背包变形)
    POJ3180(有向图强连通分量结点数>=2的个数)
    POJ1236 (强连通分量缩点求入度为0和出度为0的分量个数)
  • 原文地址:https://www.cnblogs.com/lxwJava/p/5293243.html
Copyright © 2011-2022 走看看