package Calculator;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Calculator{
public static void main(String[] args){
new Interface();
}
}
class Interface extends JFrame {
ArrayList<String> list = new ArrayList<String>();//用來存該運算中的數,以及運算結果,由文本編輯框得到
ArrayList<String> lists = new ArrayList<String>();//用來存該運算中使用了的運算符,當點擊運算符按鈕存起集合lists
int cout = 0; //計數運算符,用來作為集合中各元素的下標
JPanel inputpanel; //GUI組件的布局包括如下三個過程:1。創建面板,確定面板中的布局管理
JTextField inputField; // 2.給面板添加標簽
JButton button; // 3.為面板添加按鈕,文本編輯框等組件
JButton btn1,btn2,btn3,btn4;
JButton btn5,btn6,btn7,btn8;
JButton btn9,btn10,btn11,btn12;
JButton btn13,btn14,btn15,btn16;
public Interface(){
inputpanel = new JPanel();
inputField = new JTextField(9); //文本框長度為9
button = new JButton("清零");
inputpanel.add(inputField);
inputpanel.add(button);
this.add(inputpanel);
JPanel panel = new JPanel(new GridLayout(4,4));//設置panel面板的布局管理為GridLayout管理器,為一個4*4的網格
btn1 = new JButton("7");
btn2 = new JButton("8");
btn3 = new JButton("9");
btn4 = new JButton("+");
btn5 = new JButton("4");
btn6 = new JButton("5");
btn7 = new JButton("6");
btn8 = new JButton("-");
btn9 = new JButton("1");
btn10 = new JButton("2");
btn11 = new JButton("3");
btn12 = new JButton("×");
btn13 = new JButton("0");
btn14 = new JButton(".");
btn15 = new JButton("=");
btn16 = new JButton("÷"); //定義Button按鈕
panel.add(btn1);
panel.add(btn2);
panel.add(btn3);
panel.add(btn4);
panel.add(btn5);
panel.add(btn6);
panel.add(btn7);
panel.add(btn8);
panel.add(btn9);
panel.add(btn10);
panel.add(btn11);
panel.add(btn12);
panel.add(btn13);
panel.add(btn14);
panel.add(btn15);
panel.add(btn16); //將按鈕添加進panel面板
btn1.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"7");
}
});
btn2.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"8");
}
});
btn3.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"9");
}
});
btn5.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"4");
}
});
btn6.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"5" );
}
});
btn7.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"6");
}
});
btn9.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"1");
}
});
btn10.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"2");
}
});
btn11.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"3");
}
});
btn13.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+"0");
}
});
btn14.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText(inputField.getText()+".");
}
}); //為數字按鈕和小數點按鈕添加點擊事件,點擊之后按鈕所代表數字顯示在文本編輯框
btn4.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText()); //運算的實現,獲取在文本編輯框上顯示的文本,并存入集合list中
lists.add("+"); //獲取運算符,存入lists中
cout++; //標記運算符的個數,也就是要進行運算的次數
inputField.setText("");
//將編輯框置為空的,方便下一個數據的額輸入
}
});
btn8.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText());
lists.add("-");
cout++;
inputField.setText("");
}
});
btn12.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText());
lists.add("×");
cout++;
inputField.setText("");
}
});
btn16.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText());
lists.add("÷");
cout++;
inputField.setText("");
}
});
btn15.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
list.add(inputField.getText()); //點擊按鈕=時,把此事編輯框顯示的數據存入list
inputField.setText(Operator(lists.get(cout-1)));//把運算得到的結果存入list,作為下一個運算符運算的前一個數
}
});
button.addActionListener(new ActionListener () {
public void actionPerformed(ActionEvent e){
inputField.setText("");
list.clear();
//將list和lists集合保存的上一次運算的各要素清空
lists.clear();
cout = 0; //把cout的值還原
}
});
this.add(panel);
this.setTitle("計算器");
this.setSize(185,205);
this.setLayout(new FlowLayout());
this.setVisible(true); //GUI窗體
}
public String Operator(String str){
Double result = 0.0 ;
Double a = Double.parseDouble(list.get(2*cout-2));//將list中記錄的第一個運算符前一個數據轉化為Double類型
Double b = Double.parseDouble(list.get(2*cout-1));//將list中記錄的第一個運算符后一個數據轉化為Double類型
switch(str){ //cout表示第幾個字符
case "+" : result = a + b;
break;
case "-" : result = a - b;
break;
case "×" : result = a * b;
break;
case "÷" : result = a / b;
break;
}
String res = String.valueOf(result);
return res; //通過switch語句得到各種運算之后的返回值并轉化為String類型
}
}
|