⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frameapp.java

📁 很简单的计算器 JBUILDER开发 +-*、+/- SQRT clear backspace and so on
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package calculator;

import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.BorderFactory;
import java.awt.Color;
import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;

public class FrameApp extends JFrame {
    private BigDecimal op;
    private BigDecimal result;
    private boolean add, subtract, multiply, divide;
    private String source = "";
    JPanel contentPane;
    JLabel jLabel1 = new JLabel();
    FlowLayout flowLayout1 = new FlowLayout();
    JButton jButton1 = new JButton();
    JButton jButton2 = new JButton();
    JButton jButton3 = new JButton();
    JButton jButton4 = new JButton();
    JButton jButton5 = new JButton();
    JButton jButton6 = new JButton();
    JButton jButton7 = new JButton();
    JButton jButton8 = new JButton();
    JButton jButton9 = new JButton();
    JButton jButton10 = new JButton();
    JButton jButton11 = new JButton();
    JButton jButton12 = new JButton();
    JButton jButton13 = new JButton();
    JButton jButton14 = new JButton();
    JButton jButton15 = new JButton();
    JButton jButton16 = new JButton();
    JButton jButton17 = new JButton();
    JButton jButton18 = new JButton();
    JButton jButton19 = new JButton();
    JButton jButton20 = new JButton();

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

    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(flowLayout1);
        setSize(new Dimension(260, 200));
        setResizable(false);
        setTitle("Calculator");
        initJLabel();
        initJButton();
        addAllCom();
        jButton18.addActionListener(new FrameApp_jButton18_actionAdapter(this));
    }

    void initJLabel() {
        jLabel1.setBackground(Color.lightGray);
        jLabel1.setBorder(BorderFactory.createLoweredBevelBorder());
        jLabel1.setDebugGraphicsOptions(0);
        jLabel1.setPreferredSize(new Dimension(250, 30));
        jLabel1.setHorizontalAlignment(SwingConstants.RIGHT);
        jLabel1.setFont(new java.awt.Font("BOLD", Font.PLAIN, 20));
        jLabel1.setText("0.");
    }

    void initJButton() {
        jButton1.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton1.setText("7");
        jButton1.addActionListener(new FrameApp_jButton1_actionAdapter(this));
        jButton2.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton2.setText("8");
        jButton2.addActionListener(new FrameApp_jButton2_actionAdapter(this));
        jButton3.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton3.setText("9");
        jButton3.addActionListener(new FrameApp_jButton3_actionAdapter(this));
        jButton4.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton4.setText("/");
        jButton4.addActionListener(new FrameApp_jButton4_actionAdapter(this));
        jButton5.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton5.setText("Clr");
        jButton5.addActionListener(new FrameApp_jButton5_actionAdapter(this));
        jButton6.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton6.setText("4");
        jButton6.addActionListener(new FrameApp_jButton6_actionAdapter(this));
        jButton7.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        //jButton7.setToolTipText("5");
        jButton7.setText("5");
        jButton7.addActionListener(new FrameApp_jButton7_actionAdapter(this));
        jButton8.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton8.setText("6");
        jButton8.addActionListener(new FrameApp_jButton8_actionAdapter(this));
        jButton9.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        //jButton9.setToolTipText("");
        jButton9.setText("*");
        jButton9.addActionListener(new FrameApp_jButton9_actionAdapter(this));
        jButton10.setText("Back");
        jButton10.addActionListener(new FrameApp_jButton10_actionAdapter(this));
        jButton11.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton11.setText("1");
        jButton11.addActionListener(new FrameApp_jButton11_actionAdapter(this));
        jButton12.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton12.setText("3");
        jButton12.addActionListener(new FrameApp_jButton12_actionAdapter(this));
        jButton13.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton13.setText("2");
        jButton13.addActionListener(new FrameApp_jButton13_actionAdapter(this));
        jButton14.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton14.setText("-");
        jButton14.addActionListener(new FrameApp_jButton14_actionAdapter(this));
        jButton15.setText("Sqrt");
        jButton15.addActionListener(new FrameApp_jButton15_actionAdapter(this));
        jButton16.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton16.setText("0");
        jButton16.addActionListener(new FrameApp_jButton16_actionAdapter(this));
        jButton17.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton17.setText(".");
        jButton17.addActionListener(new FrameApp_jButton17_actionAdapter(this));
        jButton18.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton18.setText("+");
        jButton19.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton19.setText("=");
        jButton19.addActionListener(new FrameApp_jButton19_actionAdapter(this));
        jButton20.setFont(new java.awt.Font("宋体", Font.PLAIN, 15));
        jButton20.setText("+/-");
        jButton20.addActionListener(new FrameApp_jButton20_actionAdapter(this));
    }

    void addAllCom() {
        contentPane.setFont(new java.awt.Font("宋体", Font.PLAIN, 13));
        contentPane.add(jLabel1, null);
        contentPane.add(jButton1);
        contentPane.add(jButton2);
        contentPane.add(jButton3);
        contentPane.add(jButton4);
        contentPane.add(jButton5);
        contentPane.add(jButton6);
        contentPane.add(jButton7);
        contentPane.add(jButton8);
        contentPane.add(jButton9);
        contentPane.add(jButton10);
        contentPane.add(jButton11);
        contentPane.add(jButton13);
        contentPane.add(jButton12);
        contentPane.add(jButton14);
        contentPane.add(jButton15);
        contentPane.add(jButton16);
        contentPane.add(jButton17);
        contentPane.add(jButton18);
        contentPane.add(jButton19);
        contentPane.add(jButton20);
    }

    private boolean isDouble(String source) { //whether JLabel.String=>Numeral has decimal point
        for (int i = 0; i < source.length(); i++)
            if (source.charAt(i) == '.')
                return true;
        return false;
    }

    public void jButton17_actionPerformed(ActionEvent e) { //decimal point
        if (!source.equals("")) {
            if (!isDouble(source)) {
                source += ".";
                jLabel1.setText(source);
            }
        } else {
            source = "0.";
            jLabel1.setText(source);
        }
    }

    public void jButton16_actionPerformed(ActionEvent e) { //number 0
        //System.out.println("0");
        // System.out.println("1");
        if (!source.equals("")) {
            source += "0";
            if (!isDouble(source)) {
                jLabel1.setText(source + ".");
            } else {
                jLabel1.setText(source);
            }
        } else if (!jLabel1.getText().equals("0.")) {
            source += "0";
            if (!isDouble(source)) {
                jLabel1.setText(source + ".");
            } else {
                jLabel1.setText(source);
            }

        }
    }

    public void jButton11_actionPerformed(ActionEvent e) { //number 1
        source += "1";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }
    }

    public void jButton13_actionPerformed(ActionEvent e) { //number 2
        source += "2";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }

    }

    public void jButton5_actionPerformed(ActionEvent e) { //clear
        source = "";
        jLabel1.setText("0.");
        result = op = null;

    }

    public void jButton12_actionPerformed(ActionEvent e) { //number 3
        source += "3";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }

    }

    public void jButton6_actionPerformed(ActionEvent e) { //number 4
        source += "4";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }

    }

    public void jButton7_actionPerformed(ActionEvent e) { //number 5
        source += "5";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }

    }

    public void jButton8_actionPerformed(ActionEvent e) { //number 6
        source += "6";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }

    }

    public void jButton1_actionPerformed(ActionEvent e) { //number 7
        source += "7";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }

    }

    public void jButton2_actionPerformed(ActionEvent e) { //number 8
        source += "8";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }

    }

    public void jButton3_actionPerformed(ActionEvent e) { //number 9
        source += "9";
        if (!isDouble(source)) {
            jLabel1.setText(source + ".");
        } else {
            jLabel1.setText(source);
        }

    }

    public void jButton10_actionPerformed(ActionEvent e) { //backspace
        if (!source.equals("")) {
            if (isDouble(source)) {
                if (source.charAt(source.length() - 1) != '.') {
                    source = source.substring(0, source.length() - 1);
                    jLabel1.setText(source);
                } else if (source.length() == 2) {
                    source = "";
                    jLabel1.setText("0.");
                } else {
                    source = source.substring(0, source.length() - 2);
                    jLabel1.setText(source + ".");
                }
            } else if (source.length() == 1) {
                source = "";
                jLabel1.setText("0.");
            } else {
                source = source.substring(0, source.length() - 1);
                jLabel1.setText(source + ".");
            }
        }
    }

    public void jButton19_actionPerformed(ActionEvent e) { //operator "="
        if (result != null) {
            if (!source.equals("")) {
                op = new BigDecimal(jLabel1.getText());
                if (add == true)
                    result = result.add(op);
                else if (subtract == true)
                    result = result.subtract(op);
                else if (multiply == true)
                    result = result.multiply(op);
                else {
                    if (op.doubleValue() != 0)
                        result = result.divide(op, 15, BigDecimal.ROUND_HALF_UP);
                }

                source = "";

            } else {
                if (add == true)
                    result = result.add(op);
                else if (subtract == true)
                    result = result.subtract(op);
                else if (multiply == true)
                    result = result.multiply(op);
                else {
                    if (op.doubleValue() != 0)
                        result = result.divide(op, 15, BigDecimal.ROUND_HALF_UP);
                }
            }

            //System.out.println(result.doubleValue());
            if (divide == true && op.doubleValue() == 0)
                jLabel1.setText("divisor can not be 0");
            else if (isDouble(result.toString()))
                jLabel1.setText(result.toString());
            else
                jLabel1.setText(result.toString() + ".");
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -