目前學習到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時就可以正常的運算。