java Swing 实现简单计算器代码

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class Calculator extends JFrame{
    private JPanel contentPane;    //内容面板
    private JTextField textField;    //文本框
    private static String a = "";  //第一个数
    private static String b = "";  //第二个数
    private static String c = "";  //第三个数
    public static void main(String[] args)
    {
        Calculator frame=new Calculator();
        frame.setVisible(true);
    }

    public Calculator()
    {
        addKeyListener(new KeyActionListener());
        setFocusable(true);
        setTitle("计算器");    //设置窗体的标题
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //设置窗体退出时操作
        setBounds(800, 400, 250, 200);    //设置窗体位置和大小
        contentPane=new JPanel();    //创建内容面板
        contentPane.setBorder(new EmptyBorder(5,5,5,5));    //设置面板的边框
        contentPane.setLayout(new BorderLayout(0,0));    //设置内容面板为边界布局
        setContentPane(contentPane);    //应用内容面板
        JPanel panel1=new JPanel();    //新建面板用于保存文本框
        contentPane.add(panel1,BorderLayout.NORTH);    //将面板放置在边界布局的北部
        textField=new JTextField();    //新建文本框
        textField.setHorizontalAlignment(SwingConstants.RIGHT);    //文本框中的文本使用右对齐
        panel1.add(textField);    //将文本框增加到面板中
        textField.setColumns(18);    //设置文本框的列数是18

        JPanel panel2=new JPanel();    //新建面板用于保存按钮
        contentPane.add(panel2, BorderLayout.CENTER);    //将面板放置在边界布局的中央
        panel2.setLayout(new GridLayout(4,4,5,5));    //面板使用网格4X4布局
        JButton button01=new JButton("7");    //新建按钮
        button01.addActionListener(new buttonActionListener());
        button01.addKeyListener(new KeyActionListener());
        panel2.add(button01);    //应用按钮
        JButton button02=new JButton("8");    //新建按钮
        button02.addActionListener(new buttonActionListener());
        button02.addKeyListener(new KeyActionListener());
        panel2.add(button02);    //应用按钮
        JButton button03=new JButton("9");    //新建按钮
        button03.addActionListener(new buttonActionListener());
        button03.addKeyListener(new KeyActionListener());
        panel2.add(button03);    //应用按钮
        JButton button04=new JButton("+");    //新建按钮
        button04.addActionListener(new buttonActionListener());
        button04.addKeyListener(new KeyActionListener());
        panel2.add(button04);    //应用按钮
        JButton button05=new JButton("4");    //新建按钮
        button05.addActionListener(new buttonActionListener());
        button05.addKeyListener(new KeyActionListener());
        panel2.add(button05);    //应用按钮
        JButton button06=new JButton("5");    //新建按钮
        button06.addActionListener(new buttonActionListener());
        button06.addKeyListener(new KeyActionListener());
        panel2.add(button06);    //应用按钮
        JButton button07=new JButton("6");    //新建按钮
        button07.addActionListener(new buttonActionListener());
        button07.addKeyListener(new KeyActionListener());
        panel2.add(button07);    //应用按钮
        JButton button08=new JButton("-");    //新建按钮
        button08.addActionListener(new buttonActionListener());
        button08.addKeyListener(new KeyActionListener());
        panel2.add(button08);    //应用按钮
        JButton button09=new JButton("3");    //新建按钮
        button09.addActionListener(new buttonActionListener());
        button09.addKeyListener(new KeyActionListener());
        panel2.add(button09);    //应用按钮
        JButton button10=new JButton("2");    //新建按钮
        button10.addActionListener(new buttonActionListener());
        button10.addKeyListener(new KeyActionListener());
        panel2.add(button10);    //应用按钮
        JButton button11=new JButton("1");    //新建按钮
        button11.addActionListener(new buttonActionListener());
        button11.addKeyListener(new KeyActionListener());
        panel2.add(button11);    //应用按钮
        JButton button12=new JButton("*");    //新建按钮
        button12.addActionListener(new buttonActionListener());
        button12.addKeyListener(new KeyActionListener());
        panel2.add(button12);    //应用按钮
        JButton button13=new JButton("C");    //新建按钮
        button13.addActionListener(new buttonActionListener());
        button13.addKeyListener(new KeyActionListener());
        panel2.add(button13);    //应用按钮
        JButton button14=new JButton("0");    //新建按钮
        button14.addActionListener(new buttonActionListener());
        button14.addKeyListener(new KeyActionListener());
        panel2.add(button14);    //应用按钮
        JButton button15=new JButton("=");    //新建按钮
        button15.addActionListener(new buttonActionListener());
        button15.addKeyListener(new KeyActionListener());
        panel2.add(button15);    //应用按钮
        JButton button16=new JButton("/");    //新建按钮
        button16.addActionListener(new buttonActionListener());
        button16.addKeyListener(new KeyActionListener());
        panel2.add(button16);    //应用按钮


    }

    //处理按钮单击事件的匿名内部类
    class buttonActionListener implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {

            if(e.getActionCommand().equals("+")){
                if(a.equals("")){
                    a = "0";
                    a = textField.getText();
                    c = e.getActionCommand();
                }else{
                    if(c.equals("+")){
                        int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("-")){
                        int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("*")){
                        int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("/")){
                        if(Integer.valueOf(textField.getText()) == 0){
                            textField.setText("除数不能为0");
                        }
                        int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }
                    c = e.getActionCommand();
                }
            }else if(e.getActionCommand().equals("-")){
                if(a.equals("")){
                    a = "0";
                    a = textField.getText();
                    c = e.getActionCommand();
                }else{
                    if(c.equals("+")){
                        int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("-")){
                        int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("*")){
                        int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("/")){
                        if(Integer.valueOf(textField.getText()) == 0){
                            textField.setText("除数不能为0");
                        }
                        int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }
                    c = e.getActionCommand();
                }
            }else if(e.getActionCommand().equals("*")){
                if(a.equals("")){
                    a = "0";
                    a = textField.getText();
                    c = e.getActionCommand();
                }else{
                    if(c.equals("+")){
                        int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("-")){
                        int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("*")){
                        int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("/")){
                        if(Integer.valueOf(textField.getText()) == 0){
                            textField.setText("除数不能为0");
                        }
                        int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }
                    c = e.getActionCommand();
                }
            }else if(e.getActionCommand().equals("/")){
                if(a.equals("")){
                    a = "0";
                    a = textField.getText();
                    c = e.getActionCommand();
                }else{
                    if(c.equals("+")){
                        int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("-")){
                        int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("*")){
                        int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }else if(c.equals("/")){
                        if(Integer.valueOf(textField.getText()) == 0){
                            textField.setText("除数不能为0");
                        }
                        int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
                        textField.setText(String.valueOf(z));
                        a = String.valueOf(z);
                    }
                    c = e.getActionCommand();
                }
            }else if(e.getActionCommand().equals("=")){
                int x = Integer.valueOf(a);
                if(c.equals("+")){
                    textField.setText(String.valueOf(x+Integer.valueOf(textField.getText())));
                }else if(c.equals("-")){
                    textField.setText(String.valueOf(x-Integer.valueOf(textField.getText())));
                }else if(c.equals("*")){
                    textField.setText(String.valueOf(x*Integer.valueOf(textField.getText())));
                }else if(c.equals("/")){
                    if(Integer.valueOf(textField.getText()) == 0){
                        textField.setText("除数不能为0");
                    }
                    textField.setText(String.valueOf(x/Integer.valueOf(textField.getText())));
                }
            }else if(e.getActionCommand().equals("C")){
                textField.setText("");
                a = "";
                b = "";
                c = "";
            }else{
                textField.setText("");
                textField.setText(textField.getText()+e.getActionCommand());
            }
        }
    }

    class KeyActionListener implements KeyListener{

        @Override
        public void keyTyped(KeyEvent e) {

        }

        @Override
        public void keyPressed(KeyEvent e) {
                String y = KeyEvent.getKeyText(e.getKeyCode());
                if(y.equals("NumPad +")){
                    if(a.equals("")){
                        a = "0";
                        a = textField.getText();
                        c = "+";
                    }else{
                        if(c.equals("+")){
                            int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("-")){
                            int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("*")){
                            int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("/")){
                            if(Integer.valueOf(textField.getText()) == 0){
                                textField.setText("除数不能为0");
                            }
                            int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }
                        c = "+";
                    }
                }else if(y.equals("NumPad -")){
                    if(a.equals("")){
                        a = "0";
                        a = textField.getText();
                        c = "-";
                    }else{
                        if(c.equals("+")){
                            int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("-")){
                            int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("*")){
                            int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("/")){
                            if(Integer.valueOf(textField.getText()) == 0){
                                textField.setText("除数不能为0");
                            }
                            int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }
                        c = "-";
                    }
                }else if(y.equals("NumPad *")){
                    if(a.equals("")){
                        a = "0";
                        a = textField.getText();
                        c = "*";
                    }else{
                        if(c.equals("+")){
                            int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("-")){
                            int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("*")){
                            int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("/")){
                            if(Integer.valueOf(textField.getText()) == 0){
                                textField.setText("除数不能为0");
                            }
                            int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }
                        c = "*";
                    }
                }else if(y.equals("NumPad /")){
                    if(Integer.valueOf(textField.getText()) == 0){
                        textField.setText("除数不能为0");
                    }
                    if(a.equals("")){
                        a = "0";
                        a = textField.getText();
                        c = "/";
                    }else{
                        if(c.equals("+")){
                            int z = Integer.valueOf(a)+Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("-")){
                            int z = Integer.valueOf(a)-Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("*")){
                            int z = Integer.valueOf(a)*Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }else if(c.equals("/")){
                            if(Integer.valueOf(textField.getText()) == 0){
                                textField.setText("除数不能为0");
                            }
                            int z = Integer.valueOf(a)/Integer.valueOf(textField.getText());
                            textField.setText(String.valueOf(z));
                            a = String.valueOf(z);
                        }
                        c = "/";
                    }
                }else if(y.equals("Enter")){
                    int x = Integer.valueOf(a);
                    if(c.equals("+")){
                        textField.setText(String.valueOf(x+Integer.valueOf(textField.getText())));
                    }else if(c.equals("-")){
                        textField.setText(String.valueOf(x-Integer.valueOf(textField.getText())));
                    }else if(c.equals("*")){
                        textField.setText(String.valueOf(x*Integer.valueOf(textField.getText())));
                    }else if(c.equals("/")){
                        if(Integer.valueOf(textField.getText()) == 0){
                            textField.setText("除数不能为0");
                        }
                        textField.setText(String.valueOf(x/Integer.valueOf(textField.getText())));
                    }
                }else if(y.equals("Esc")){
                    textField.setText("");
                    a = "";
                    b = "";
                    c = "";
                }else{
                    textField.setText("");
                    y = y.replaceAll("NumPad-","");
                    textField.setText(textField.getText()+y);
                }

        }

        @Override
        public void keyReleased(KeyEvent e) {

        }
    }
}

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生若梦01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值