java:用Swing做一个普通计算器

用Swing做一个普通计算器

用swing做更加复杂的计算器
https://blog.csdn.net/dark_souls/article/details/89672759

由于上一篇文章用的一个主类调用科学和普通计算器,现在补充一个普通的计算器

package Cacultor_1;

import javax.swing.*;
import javax.xml.soap.Text;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.security.Key;
/**
**@author 李正阳  
**/
public class CacultorL extends JFrame implements ActionListener{
    private final String keys[]={"%","√","x^2","1/x","CE","C","<-                 ","/","7","8","9","*","4","5","6","-","1","2","3","+","+/-","0",".","="};    //主要按钮
    private final String Rom[]={"MC","MR","M+","M-","MS","M"};
    private JButton Keys[]=new JButton[keys.length];    //创建按钮组
    private JButton rom[]=new JButton[Rom.length];
   static JMenuBar menuBar=new JMenuBar();
    JPanel CenterPanel=new JPanel();
    JPanel NorthPanel=new JPanel();
    JPanel SouthPanel=new JPanel();
    JTextField textField=new JTextField(17);//下文本域
    JTextField textFieldUp=new JTextField(17);//上文本域
    private double left;                          //计算中存左值
    private double right;                          //计算中存右值
    private double result;
    private String Result;
    private String temp="";
    private static int option;
    private static String temp1="";
    public static void main(String[] args) {
        CacultorL window=new CacultorL();        //设置Jframe窗口的基本配置
        window.setSize(500,300);
       window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//添加最大化最小化组件
        window.pack();    //自适应大小
        window.setJMenuBar(menuBar);  //创建菜单
        window.setVisible(true);    //显示窗口
    }
   public CacultorL(){                         //构造函数初始化计算器
       JMenu fileItem=new JMenu("      功能菜单");         //菜单组件
       JMenuItem card1=new JMenuItem("           科学");
       JMenuItem card2=new JMenuItem("       文件处理");
       menuBar.add(fileItem);
       fileItem.add(card1);                
       fileItem.add(card2);

       SouthPanel.setLayout(new GridLayout(2,1));               //设置网格布局
       CenterPanel.setLayout(new GridLayout(6,4));
       NorthPanel.setLayout(new GridLayout(1,6));
       CenterPanel.setPreferredSize(new Dimension(400,300));//设置jpanel的大小
       NorthPanel.setPreferredSize(new Dimension(50,50));
       addRom(Rom);
       for(int i=0;i<keys.length;i++) {             //将按钮添加上监视器,放在面板上
           addKeys(keys[i],i);
       }
       SouthPanel.add(textFieldUp);               //添加上文本域
       SouthPanel.add(textField);                
       add(SouthPanel,BorderLayout.NORTH);
       add(CenterPanel,BorderLayout.SOUTH);
       add(NorthPanel,BorderLayout.CENTER);
       textField.setHorizontalAlignment(JTextField.RIGHT); //锁定成不可修改
       textField.setEditable(false);
       textFieldUp.setHorizontalAlignment(JTextField.RIGHT);
       textFieldUp.setEditable(false);
   }
  public void addKeys(String keys,int i){
         Keys[i]= new  JButton(keys);
         CenterPanel.add(Keys[i]);
         Keys[i].addActionListener(this);
  }
  public void addRom(String Rom[]){
      for(int i=0;i<Rom.length;i++){
          rom[i]= new  JButton(Rom[i]);
          NorthPanel.add(rom[i]);
      }
  }
    @Override
    public void actionPerformed(ActionEvent e) { //数字键盘的监视器
         if(e.getSource()==Keys[8]){
             temp+="7";
             temp1+="7";
             textField.setText(temp);

         }else if(e.getSource()==Keys[9]){
             temp1+="8";
             temp+="8";
             textField.setText(temp);

         }else if(e.getSource()==Keys[10]){
             temp1+="9";
             temp+="9";
             textField.setText(temp);

         }else if(e.getSource()==Keys[12]){
             temp1+="4";
             temp+="4";
             textField.setText(temp);

         }else if(e.getSource()==Keys[13]){
             temp1+="5";
             temp+="5";
             textField.setText(temp);

         }else if(e.getSource()==Keys[14]){
             temp1+="6";
             temp+="6";
             textField.setText(temp);

         }else if(e.getSource()==Keys[16]){
             temp1+="1";
             temp+="1";
             textField.setText(temp);
         }
         else if(e.getSource()==Keys[17]){
             temp1+="2";
             temp+="2";
             textField.setText(temp);
         }
         else if(e.getSource()==Keys[18]){
             temp1+="3";
             temp+="3";
             textField.setText(temp);
         }
        if(e.getSource()==Keys[0]){
            left=Double.parseDouble(textField.getText());
            textField.setText("");
            temp="";
            temp1+="%";
            textFieldUp.setText(temp1);
            option=2;
        }else if(e.getSource()==Keys[23]){   //等于号方法
            if(option==1){
                String Right=textField.getText();
                right=Double.parseDouble(Right);
                result=left+right;
                Result=""+result;
            }else if (option==2){
                right=Double.parseDouble(textField.getText());
                result=left%right;
                Result=""+result;
            }else if(option==3){
                right=Double.parseDouble(textField.getText());
                result=left/right;
                Result=""+result;
            }else if(option==4){
                right=Double.parseDouble(textField.getText());
                result=left*right;
                Result=""+result;
            }else if(option==5){
                right=Double.parseDouble(textField.getText());
                result=left-right;
                Result=""+result;
            }
            textField.setText(Result);
        }else if (e.getSource()==Keys[1]){           //加减乘除等功能键的监视器方法
            left=Double.parseDouble(textField.getText());
            textField.setText("");
            temp="";
            result=Math.sqrt(left);
            Result=""+result;
            textFieldUp.setText(Result);
        }else if(e.getSource()==Keys[2]){
            left=Double.parseDouble(textField.getText());
            textField.setText("");
            temp="";
            result=left*left;
            Result=""+result;
            textFieldUp.setText(Result);
        }else if(e.getSource()==Keys[3]){
            left=Double.parseDouble(textField.getText());
            textField.setText("");
            temp="";
            result=1/left;
            Result=""+result;
            textFieldUp.setText(Result);
        }else if(e.getSource()==Keys[4]){
            textField.setText("");
            temp="";
            temp1="";
        }else if(e.getSource()==Keys[19]){
            left=Double.parseDouble(textField.getText());
            temp1+="+";
            textFieldUp.setText(temp1);
            textField.setText("");
            temp="";
            option=1;
        }else if(e.getSource()==Keys[5]){
            textField.setText("");
            temp="";
            temp1="";
        }else if(e.getSource()==Keys[6]){
            textField.setText("");
            temp="";
            temp1="";
        }else if(e.getSource()==Keys[7]){
            left=Double.parseDouble(textField.getText());
            temp1+="/";
            textFieldUp.setText(temp1);
            textField.setText("");
            temp="";
            option=3;
        }else if(e.getSource()==Keys[11]){
            left=Double.parseDouble(textField.getText());
            temp1+="*";
            textFieldUp.setText(temp1);
            textField.setText("");
            temp="";
            option=4;
        }else if(e.getSource()==Keys[15]){
            left=Double.parseDouble(textField.getText());
            temp1+="-";
            textFieldUp.setText(temp1);
            textField.setText("");
            temp="";
            option=5;
        }else if(e.getSource()==Keys[22]){
            temp1+=".";
            temp+=".";
            textField.setText(temp);
        }
    }



    class ROM implements ActionListener{//加减乘除的监视器
        @Override
        public void actionPerformed(ActionEvent e) {//未完成的计算器方法
            if(e.getSource()==Keys[0]){

            }
        }
    }


}

运行界面
在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值