使用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 篇原創文章 · 獲贊 10 · 訪問量 4914
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章