国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

java實現(xiàn)的計算器功能示例【基于swing組件】

2024-07-13 10:15:08
字體:
供稿:網(wǎng)友

本文實例講述了java實現(xiàn)的計算器功能。分享給大家供大家參考,具體如下:

package awtDemo;import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;@SuppressWarnings("serial")public class Calculator extends JFrame implements ActionListener {    private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",            "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };    private final String[] COMMAND = { "Backspace", "CE", "C" };    private JButton keys[] = new JButton[KEYS.length];    private JButton commands[] = new JButton[COMMAND.length];    private JTextField resultText = new JTextField("0");    private boolean firstDigit = true;    private double resultNum = 0.0;    private String operator = "=";    private boolean operateValidFlag = true;    public Calculator() {        init();        this.setBackground(Color.LIGHT_GRAY);        this.setTitle("m.survivalescaperooms.com - 計算器");        this.setLocation(500, 300);        this.setResizable(false);        this.pack();    }    private void init() {        resultText.setHorizontalAlignment(JTextField.RIGHT);        resultText.setEditable(false);        resultText.setBackground(Color.white);        JPanel calckeysPanel = new JPanel();        calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));        for (int i = 0; i < KEYS.length; i++) {            keys[i] = new JButton(KEYS[i]);            calckeysPanel.add(keys[i]);            keys[i].setForeground(Color.blue);        }        keys[3].setForeground(Color.red);        keys[8].setForeground(Color.red);        keys[13].setForeground(Color.red);        keys[18].setForeground(Color.red);        keys[19].setForeground(Color.red);        JPanel commandsPanel = new JPanel();        commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));        for (int i = 0; i < COMMAND.length; i++) {            commands[i] = new JButton(COMMAND[i]);            commandsPanel.add(commands[i]);            commands[i].setForeground(Color.red);        }        JPanel panel1 = new JPanel();        panel1.setLayout(new BorderLayout(3, 3));        panel1.add("North", commandsPanel);        panel1.add("West", calckeysPanel);        JPanel top = new JPanel();        top.setLayout(new BorderLayout());        top.add("Center", resultText);        getContentPane().setLayout(new BorderLayout(3, 5));        getContentPane().add("North", top);        getContentPane().add("Center", panel1);        for (int i = 0; i < KEYS.length; i++) {            keys[i].addActionListener(this);        }        for (int i = 0; i < COMMAND.length; i++) {            commands[i].addActionListener(this);        }    }    public void actionPerformed(ActionEvent e) {        String label = e.getActionCommand();        if (label.equals(COMMAND[0])) {            handleBackspace();        } else if (label.equals(COMMAND[1])) {            resultText.setText("0");        } else if (label.equals(COMMAND[2])) {            handleC();        } else if ("0123456789.".indexOf(label) >= 0) {            handleNumber(label);        } else {            handleOperator(label);        }    }    private void handleBackspace() {        String text = resultText.getText();        int i = text.length();        if (i > 0) {            text = text.substring(0, i - 1);            if (text.length() == 0) {                resultText.setText("0");                firstDigit = true;                operator = "=";            } else {                resultText.setText(text);            }        }    }    private void handleNumber(String key) {        if (firstDigit) {            resultText.setText(key);        } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {            resultText.setText(resultText.getText() + ".");        } else if (!key.equals(".")) {            resultText.setText(resultText.getText() + key);        }        firstDigit = false;    }    private void handleC() {        resultText.setText("0");        firstDigit = true;        operator = "=";    }    private void handleOperator(String key) {        if (operator.equals("/")) {            if (getNumberFromText() == 0.0) {                operateValidFlag = false;                resultText.setText("除數(shù)不能為零");            } else {                resultNum /= getNumberFromText();            }        } else if (operator.equals("1/x")) {            if (resultNum == 0.0) {                operateValidFlag = false;                resultText.setText("零沒有倒數(shù)");            } else {                resultNum = 1 / resultNum;            }        } else if (operator.equals("+")) {            resultNum += getNumberFromText();        } else if (operator.equals("-")) {            resultNum -= getNumberFromText();        } else if (operator.equals("*")) {            resultNum *= getNumberFromText();        } else if (operator.equals("sqrt")) {            resultNum = Math.sqrt(resultNum);        } else if (operator.equals("%")) {            resultNum = resultNum / 100;        } else if (operator.equals("+/-")) {            resultNum = resultNum * (-1);        } else if (operator.equals("=")) {            resultNum = getNumberFromText();        }        if (operateValidFlag) {            long t1;            double t2;            t1 = (long) resultNum;            t2 = resultNum - t1;            if (t2 == 0) {                resultText.setText(String.valueOf(t1));            } else {                resultText.setText(String.valueOf(resultNum));            }        }        operator = key;        firstDigit = true;        operateValidFlag = true;    }    private double getNumberFromText() {        double result = 0;        try {            result = Double.valueOf(resultText.getText()).doubleValue();        } catch (NumberFormatException e) {        }        return result;    }    public static void main(String args[]) {        Calculator calculator1 = new Calculator();        calculator1.setVisible(true);        calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    }}

運行效果:

java,計算器,swing組件

 

希望本文所述對大家java程序設計有所幫助。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 响水县| 连州市| 法库县| 商丘市| 兰西县| 永安市| 民县| 天等县| 昭苏县| 仁寿县| 虎林市| 墨脱县| 岚皋县| 黎城县| 金堂县| 承德市| 涞源县| 曲水县| 增城市| 镶黄旗| 大足县| 广饶县| 正宁县| 太和县| 小金县| 鄂托克前旗| 应城市| 石渠县| 高要市| 墨江| 盖州市| 丰镇市| 航空| 乌什县| 安化县| 颍上县| 龙山县| 荔波县| 沙河市| 义乌市| 咸丰县|