学习实验楼课程:Java实现简单计算器(一)

初学Java,在实验楼尝试这个项目,不太懂,我看到了完整的代码,但不知道这些代码是怎么来的。没办法,自己从头开始,看看一个计算器的实现是怎么一个过程。

  1. 首先,我觉得需要一个界面,简单一点的,于是,先随手画了一个界面:
学习实验楼课程:Java实现简单计算器(一)_第1张图片
一个简单的界面,看上去很厉害的样子
  1. 那么,第一步就先做出这个界面吧,按钮有没有用先不管,先看到才是真的。
  • 知道是用Swing做出来的,搜索了一下这个包的基本用法;
  • 外加自己的猜测,我想应该是有一个叫JFrame对象作为外面的框架,里面放JPanel对象,可以当作一种分区,JPanel对象里面再放JButton按钮、JTextField文本区域之类的。
  • 看了下原来的代码,大概清楚了:
    • 先是创建一个计算器类,创建好基本的零部件;
    • 然后自定义构造器,这个类就是一个窗口,把部件放上去,生成这个窗口就行了;
    • 最后写一个主函数进行测试,主函数的内容就是生成窗口,也就是创建一个计算器类的实体;
  • 原来的命名太土了,肯定是用自己的,大概得到代码如下:
public class MyCalculator {
    /*基本参数定义并初始化*/
    float ans = 0;                  //用于存储答案,初始为0;
    String ans_dis = "0";            //用于存储显示字段,初始为“0”;
    float tmp = 0;                  //用于存储输入,初始为0;
    String act = "+";                //用于存储符号,默认为“+”;
    int arg_point = 0;              //判断是否在小数点之后,默认为0,即不在小数点后;
    static int arg_mtinput1 = 10;    //如果不在小数点后,多次输入处理时使用的常数,处理方式为 tmp = tmp * 10 + new_input,这个参数其实不需要,写出来方便解释,如果必要,可以用来调整进制;
    float arg_mtinput2 = 1;        //如果在小数点后,多次输入处理时使用的变量,arg = arg / 10,tem = tem + new_input * arg;
    
    /*创建UI组件*/
    JFrame calFrame = new JFrame("cal");
    JTextField ansField = new JTextField(ans_dis, 20);  //用于显示答案的文本框,第一个参数是显示的对象,第二个参数是文本框显示的列数(长度);
    
    JButton button_0 = new JButton("0");    //参数为按钮上显示的内容;
    JButton button_1 = new JButton("1");
    JButton button_2 = new JButton("2");
    JButton button_3 = new JButton("3");
    JButton button_4 = new JButton("4");
    JButton button_5 = new JButton("5");
    JButton button_6 = new JButton("6");
    JButton button_7 = new JButton("7");
    JButton button_8 = new JButton("8");
    JButton button_9 = new JButton("9");
    JButton button_point = new JButton(".");
    JButton button_mtp = new JButton("*");
    JButton button_div = new JButton("/");
    JButton button_add = new JButton("+");
    JButton button_sub = new JButton("-");
    JButton button_eql = new JButton("=");
    JButton button_clear = new JButton("clear");
    
    /*MyCalculator的构造器*/
    public MyCalculator() {
        /*第一步,先把界面做出来*/
        /*创建容器,将UI组建放上去*/
        JPanel pan = new JPanel();
        pan.setLayout(new GridLayout(4,4,5,5)); //GridLayout是一个矩阵式布局的控件,用处很大,这里创建一个控件,四个参数分别为行数、列数、横向间隔、纵向间隔;
        pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));    //设置四边边距;
        
        pan.add(button_7);
        pan.add(button_8);
        pan.add(button_9);
        pan.add(button_div);
        pan.add(button_4);
        pan.add(button_5);
        pan.add(button_6);
        pan.add(button_mtp);
        pan.add(button_1);
        pan.add(button_2);
        pan.add(button_3);
        pan.add(button_sub);
        pan.add(button_0);
        pan.add(button_point);
        pan.add(button_eql);
        pan.add(button_add);
        
        JPanel pan_up = new JPanel();
        pan_up.setLayout(new BorderLayout());       //BorderLayout也是一个布局管理器,只有东南西北中五种位置,默认为中间;
        pan_up.setBorder(BorderFactory.createEmptyBorder(10,5,5,5));
        ansField.setHorizontalAlignment(JTextField.RIGHT);
        pan_up.add(ansField, BorderLayout.NORTH);
        pan_up.add(button_clear, BorderLayout.SOUTH);
        pan_up.add(button_clear, BorderLayout.EAST);        //这边可以看到,可以重叠使用,即同时靠下并靠右;
        
        /*界面设置*/
        calFrame.setLocation(500, 300);  //设置窗口在屏幕上的位置;
        calFrame.setResizable(true);        //设置大小可调整;
        calFrame.getContentPane().setLayout(new BorderLayout());
        calFrame.getContentPane().add(pan_up, BorderLayout.NORTH);
        calFrame.getContentPane().add(pan, BorderLayout.CENTER);
        calFrame.pack();                    //记得整体打包;
        calFrame.setVisible(true);

        /*增加窗口关闭时退出程序的动作,否则不会自动退出*/
        calFrame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

主函数很简单:

    public static void main(String[] args) {
        /*构建一个计算器实体*/
        MyCalculator calculator = new MyCalculator();
    }

当然,这些代码用到了一些包,一开始需要导入一下:

package kant.learning;  //其实我不太清楚需要用到哪些包,因此,都是用到了之后再点击导入的,同时把最后面那个词改为*,省事;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

如此这般之后,至少可以看到界面了,怎么算,那是下一步的事了。

你可能感兴趣的:(学习实验楼课程:Java实现简单计算器(一))