使用GUI实现计算器四则运算的图形界面

目前学习到GUI,所以通过写了一个计算器的四则运算来加固知识点,虽然这只是一个简单的界面,但是覆盖的知识点还是挺多的。

下面就用代码实现吧

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class Calculator {
    private JFrame jFrame;//创建一个容器
    private Container contentPane; //容器,一个表面的桌布
    private JTextField field1,field2,field3;//创建文本框
    private JComboBox jcb;//下拉框
    private JLabel resultLabel;//创建运算=
    private JButton jb1,jb2,jb3;//创建按钮
    
    String [] strings= {"+","-","x","/"};
    
    //构造方法初始化
    public Calculator() {
        jFrame=new JFrame("计算器");//初始化容器
        
        //设置大小
        jFrame.setSize(600,200);
        
        //设置窗口在显示屏的位置
        jFrame.setLocation(500, 300);
        
        //固定边框
        jFrame.setResizable(false);
        
        //设置直接关闭直接退出程序
        jFrame.setDefaultCloseOperation(jFrame.EXIT_ON_CLOSE);
        
        //创建一个获取三原色的类
        Color c=new Color(200,199,100);
        
        //初始化桌布容器
        contentPane=jFrame.getContentPane();  //获取相应的桌布对象
        
        //将背景颜色添加到桌布容器中
        contentPane.setBackground(c);
        
        //设置流式布局
        jFrame.setLayout(new FlowLayout());
        init();
    }
    
    
    //初始化方法
    public void init() {
        //1:初始化相应的组件
        field1=new JTextField(10);
        field2=new JTextField(10);
        field3=new JTextField(10);
        //初始化下拉框组件
        jcb=new JComboBox(strings);
        //初始化运算组件
        resultLabel=new JLabel("=");
        //初始化按钮组件
        jb1=new JButton("计算");
        jb2=new JButton("清空");
        jb3=new JButton("退出");
        
        //2:对各个组件进行字体,大小,加粗处理
        Font font=new Font("微软雅黑",Font.BOLD,15);
        
        //3:将这字体运用到各个组件中
        field1.setFont(font);
        field2.setFont(font);
        field3.setFont(font);
        jcb.setFont(font);
        resultLabel.setFont(font);
        jb1.setFont(font);
        jb2.setFont(font);
        jb3.setFont(font);
        //4:将对应的组件添加到容器中
        contentPane.add(field1);
        contentPane.add(jcb);
        contentPane.add(field2);
        contentPane.add(resultLabel);
        contentPane.add(field3);
        contentPane.add(jb1);
        contentPane.add(jb2);
        contentPane.add(jb3);
        
        //设置结果文本框不可编辑
        field3.setEditable(false);
        
        //设置输入为右边输入
        field1.setHorizontalAlignment(JTextField.RIGHT);
        field2.setHorizontalAlignment(JTextField.RIGHT);
        field3.setHorizontalAlignment(JTextField.RIGHT);
        
        //5:设置事件监听
        //计算监听事件
        jb1.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                String s1 = field1.getText().trim();//获取文本内容,去空格
                String s2 = field2.getText().trim();
                if (s1.equals("")||s2.equals("")) {
                    //提示框
                    JOptionPane.showMessageDialog(null, "請輸入非空數據");
                    return;
                }
                
                //将文本内容转换为整型
                int i1 = Integer.parseInt(s1);
                int i2 = Integer.parseInt(s2);
                
                //返回当前所选项,就是返回你选择的运算符
                String str1 = (String) jcb.getSelectedItem();
                
                
                //进行运算符判断,并进行相应的运算
                if (str1.equals("+")) {
                    int num=i1+i2;
                    field3.setText(num+"");
                }else if (str1.equals("-")) {
                    int num=i1-i2;
                    field3.setText(num+"");
                }else if (str1.equals("x")) {
                    int num=i1*i2;
                    field3.setText(num+"");
                }else if (str1.equals("/")) {
                    //当为除时,除数是不能为零的,所以进行相应的判断
                    if (i2==0) {
                        JOptionPane.showMessageDialog(null, "除数不能为0");
                        return;
                    }
                    int num=i1/i2;
                    field3.setText(num+"");
                }
                
            }
        });
        
        //添加清空事件
        jb2.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                field1.setText("");
                field2.setText("");
                field3.setText("");
                
            }
        });
        
        //添加退出事件
        jb3.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
                
            }
        });

    }
    
    //启动窗口的方法
    public void go() {
        //显示窗口可见
        jFrame.setVisible(true);
    }
    
    public static void main(String[] args) {
        new Calculator().go();
    } 

}

运行程序就会得到下面的界面


这里主要就是有两个注意的地方

1:就是运算符的下拉框的获取,要进行相应的运算我们得先知道是怎样运算,在运算事件中你要获取相应的运算符号,然后再进行相应的符号比较,就可以进行运算了。

2:获取的运算符号为 / 时我们就得进行判断了,因为在进行除运算时除数是不能为0的,当为0时给出一个弹窗,同时用return返回,不为0时就可以正常的运算。

发布了42 篇原创文章 · 获赞 6 · 访问量 2974

猜你喜欢

转载自blog.csdn.net/qq_44666176/article/details/99647385