博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jsq.java
阅读量:5148 次
发布时间:2019-06-13

本文共 2392 字,大约阅读时间需要 7 分钟。

package cn.curricular.examples;
import java.awt.BorderLayout;
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;
public class Jsq implements ActionListener {
    private JFrame frame;
    private JButton[] bus;
    private JTextField jtx;
    private JButton bu;
    private char[] strs;
    private String d_one = "";
    private String operator;
    public static void main(String[] args) {
        new Jsq();
    }
    /* 利用构造进行实例化 */
    public Jsq() {
        frame = new JFrame("计算器");
        jtx = new JTextField(14);
        bus = new JButton[16];
        strs = "789/456*123-0.+=".toCharArray();
        for (int i = 0; i < 16; i++) {
            bus[i] = new JButton(strs[i] + "");
            bus[i].addActionListener(this);
        }
        bu = new JButton("C");
        bu.addActionListener(this);
        init();
    }
    /* GUI 初始化 */
    public void init() {
        JPanel jp1 = new JPanel();
        jp1.add(jtx);
        jp1.add(bu);
        frame.add(jp1, BorderLayout.NORTH);
        JPanel jp2 = new JPanel();
        jp2.setLayout(new GridLayout(4, 4));
        for (int i = 0; i < 16; i++) {
            jp2.add(bus[i]);
        }
        frame.add(jp2, BorderLayout.CENTER);
        frame.pack();
        frame.setLocation(300, 400);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    /* 事件的处理 */
    public void actionPerformed(ActionEvent arg0) {
        /* 获取输入字符 */
        String conn = arg0.getActionCommand();
        /* 清除计算器内容 */
        if ("C".equals(conn)) {
            d_one = "";
            operator = "";
            jtx.setText("");
            return;
        }
        /* 暂未实现该功能 */
        if (".".equals(conn)) {
            return;
        }
        /* 记录运算符,保存运算数字 */
        if (("+-*/".indexOf(conn)) != -1) {
            if ("".equals(d_one) && "".equals(jtx.getText()))
                return;
            d_one = jtx.getText();
            operator = conn;
            jtx.setText("");
            return;
        }
        /* 计算结果 */
        if ("=".equals(conn)) {
            if ("".equals(d_one) && "".equals(jtx.getText()))
                return;
            double db = 0;
            if ("+".equals(operator)) {
                db = Double.parseDouble(d_one) + Double.parseDouble(jtx.getText());
                jtx.setText(db + "");
            }
            if ("-".equals(operator)) {
                db = Double.parseDouble(d_one) - Double.parseDouble(jtx.getText());
                jtx.setText(db + "");
            }
            if ("*".equals(operator)) {
                db = Double.parseDouble(d_one) * Double.parseDouble(jtx.getText());
                jtx.setText(db + "");
            }
            if ("/".equals(operator)) {
                db = Double.parseDouble(d_one) / Double.parseDouble(jtx.getText());
                jtx.setText(db + "");
            }
            d_one = db + "";
            return;
        }
        // 界面显示
        jtx.setText(jtx.getText() + conn);
    }
}

转载于:https://www.cnblogs.com/liangmiao/p/7221807.html

你可能感兴趣的文章
Ubuntu下Jenkins(docker)配置Docker远程启动
查看>>
【正则表达式】前瞻,后顾,负前瞻,负后顾
查看>>
译 4. 事务管理
查看>>
个人训练
查看>>
数学定理证明机械化的中国学派(II)
查看>>
使用 Bluemix™ Live Sync 高速更新 Bluemix 上执行的应用程序实例
查看>>
云计算学习基础,云计算学习课程
查看>>
类的加载和连接过程
查看>>
[我研究]9月第二周
查看>>
45个纯 CSS 实现的精美边框效果【附演示和源码】【上篇】
查看>>
android exception requestfeature must be called before adding content
查看>>
第二章 Vue快速入门-- 26 过滤器-定义私有过滤器
查看>>
Set集合HashSet,TreeSet
查看>>
Docker三要素
查看>>
机器学习:线性模型
查看>>
eclipse web工程不能 修改build path
查看>>
Visual Studio 2015 终于还是装上了
查看>>
libusb(.NET)开源项目使用小结
查看>>
1、Java调用C语言(本地法)
查看>>
windows下 gvim 配置
查看>>