0


JAVA课程设计——GUI实现简易计算器

GUI实现简易计算器——JAVA

一.设计任务及要求

任务:设计并实现一个计算器小程序
要求:
  1. 使用图形用户界面
  2. 能在键盘或鼠标上读入数据,并完成加,减,乘,除计算。
  3. 在屏幕上显示一个主菜单。
  4. 提示用户输入相应的数字键,分别执行加,减,乘,除计算功能和结束程序的功能。

二.需求分析:

​ 计算器:首先要有一个键盘和一个显示窗口,键盘至少要包含0-9十个数字键以及“+、-、*、/、=”五个运算符,最好还要有“小数点和清除”按键。窗口用来显示已输入的数字和运算结果,用户可以通过鼠标点击键盘上的按钮,完成基本的实数间的加减乘除运算,同时也可以通过键盘输入数字。

三.总体设计

1.界面设计:

​ 只用一个界面即可完成,启动程序后自动弹出界面,点击关闭即程序结束。界面一律采用Swing类设计,一个窗体里分为两个面板North和Center,North面板在界面最上方,通过一个文本框显示输入的数据和运算结果,清除键可安装在文本框侧边。Center面板在界面中间,安放所有十六个按钮,采用4×4布局。所有按钮添加监听事件,同时对键盘上的数字键添加监听事件。

2.功能实现:

​ 设计一个存放操作符的变量command,一个存放数字的变量num,和一个布尔类型的判断标识符。编写一个calculate计算方法,接受double类型的数据,可以完成加减乘除等五种运算,最后使文本框中的值变为运算结果。标识符初始化为true,当按钮被点击时,首先判断被点击的按钮是否是五个运算符中的任何一个,如果是第一个输入的减号,则将跟在其后的数字设置为负数,如果先输入数字,则后面的减号是减的意思。每输入一个数和一个操作符就调用一次calculate,最后以字符串的形式显示在文本框中。

四.代码详细实现

importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;/**
 * @ClassName: Mycalculator
 * @Auther: Drawin
 * @Date: 2021/12/24 15:33
 * @Description:计算器小程序
 * 要求:使用图形用户界面
 * 能在键盘或鼠标上读入数据,并完成加。减。乘。除计算。
 * 在屏幕上显示一个主菜单。提示用户输入 相应的数字键,分别执行加。减。乘。除计算功能和结束程序的功能。
 */publicclassMycalculatorextendsJFrame{privateString[]name={"1","2","3","+","4","5","6","-","7","8","9","*","0",".","=","/"};JButton[] jButton=newJButton[name.length];privatedouble num=0;privateString command="=";//运算符privateboolean start=true;//判断标识符privateJTextField jTextField =newJTextField(20);//一个文本框,放在外面,不然后面的方法调用不了publicMycalculator(){Container container =this.getContentPane();JPanel jPane1 =newJPanel();//输入框面板JPanel jPane2 =newJPanel(newGridLayout(4,4));//键盘面板//十七个按钮和监听ButtonAction ba =newButtonAction();KeyAction ka =newKeyAction();Ce ce1 =newCe();JButton ce =newJButton("CE");
        ce.addActionListener(ce1);for(int i =0; i < name.length; i++){
            jButton[i]=newJButton(name[i]);
            jButton[i].addActionListener(ba);
            jButton[i].addKeyListener(ka);
            jPane2.add(jButton[i]);//按钮装到面板上Font font =newFont("Courier New",Font.BOLD,22);//按钮太小了,字体调大点
            jButton[i].setFont(font);}//组装
        jPane1.add(jTextField,BorderLayout.WEST);
        jPane1.add(ce,BorderLayout.EAST);
        jPane1.setBackground(newColor(102,204,255));//美化一下this.add(jPane1,BorderLayout.NORTH);this.add(jPane2,BorderLayout.CENTER);this.setVisible(true);//设置可见性this.setBounds(300,200,500,400);this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置默认窗口关闭事件}publicvoidcalculate(double x){if(command.equals("+"))
            num+=x;elseif(command.equals("-"))
            num-=x;elseif(command.equals("*"))
            num*=x;elseif(command.equals("/"))
            num/=x;elseif(command.equals("="))
            num=x;
        jTextField.setText(""+num);//num是double不是String所以这样转一下}privateclassButtonActionimplementsActionListener{//内部类,抽一个按钮监听器出来@OverridepublicvoidactionPerformed(ActionEvent e){String input=e.getActionCommand();if(input.equals("+")||input.equals("-")||input.equals("*")||input.equals("/")||
                   input.equals("=")){if(start){if(input.equals("-")){//负数
                       jTextField.setText(input);
                       start=false;}else
                       command=input;}else{calculate(Double.parseDouble(jTextField.getText()));
                   command=input;
                   start=true;}}else{if(start){
                   jTextField.setText("");
                   start=false;}
               jTextField.setText(jTextField.getText()+input);}}}privateclassKeyActionextendsKeyAdapter{//继承适配器,不用实现接口的所有方法publicvoidkeyTyped(KeyEvent e){char key = e.getKeyChar();if(key=='0'||key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||key=='7'||key=='8'||key=='9'){if(start){
                    jTextField.setText("");
                    start=false;}
                jTextField.setText(jTextField.getText()+key);}elseif(key=='+'||key=='-'||key=='/'||key=='*'){if(start){if(key=='-'){
                        jTextField.setText(String.valueOf(key));
                        start=false;}else
                        command=String.valueOf(key);}else{calculate(Double.parseDouble(jTextField.getText()));
                   command=String.valueOf(key);
                    start=true;}}}}privateclassCeimplementsActionListener{//清空键监听@OverridepublicvoidactionPerformed(ActionEvent e){
        jTextField.setText("");}}publicstaticvoidmain(String[] args){//启动器newMycalculator();}}

五.功能截图

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_55292799/article/details/126728038
版权归原作者 年迈的小笼包 所有, 如有侵权,请联系我们删除。

“JAVA课程设计——GUI实现简易计算器”的评论:

还没有评论