計算器使我們在日常生活中經常使用的一個工具。這學期學java的時候,做的一個實驗報告就是用swing組件或awt組件寫一個簡易計算器。
在此記錄以下(用swing組件寫的簡易計算器),代碼如下(經測試):
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class JiSuan extends JFrame{
JPanel panel;
JTextField text;
JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9; //0~9四個數字(可寫成數組)
JButton bot,add,sub,mul,div,equ; //加減乘除以及小數點五個符號
public JiSuan(){
this.setBounds(300, 200, 400, 300); //窗體大小
this.setTitle("計算器"); //窗體名稱
this.setLayout(new BorderLayout()); //設置計算機窗體的佈局方式
text = new JTextField(15); //計算區域
//新建數字按鈕
jb0 = new JButton("0");
jb1 = new JButton("1");
jb2 = new JButton("2");
jb3 = new JButton("3");
jb4 = new JButton("4");
jb5 = new JButton("5");
jb6 = new JButton("6");
jb7 = new JButton("7");
jb8 = new JButton("8");
jb9 = new JButton("9");
//新建符號按鈕
bot = new JButton(".");
add = new JButton("+");
sub = new JButton("-");
mul = new JButton("*");
div = new JButton("/");
equ = new JButton("=");
//新建計算器數字及符號所在區域面板
panel = new JPanel();
panel.setLayout(new GridLayout(4,4)); //設置面板的佈局方式
//將各按鈕組件放入面板(panel)中
//第一行
panel.add(jb7);
panel.add(jb8);
panel.add(jb9);
panel.add(div);
//第二行
panel.add(jb4);
panel.add(jb5);
panel.add(jb6);
panel.add(mul);
//第三行
panel.add(jb1);
panel.add(jb2);
panel.add(jb3);
panel.add(sub);
//第四行
panel.add(bot);
panel.add(jb0);
panel.add(equ);
panel.add(add);
this.add(text,BorderLayout.NORTH);
this.add(panel);
MyEvent(); //事件處理
this.setVisible(true); //設置窗體顯示
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設置窗體可關閉
}
public void MyEvent(){
/*將以下內容封裝到Text方法中
* jb0.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
// text.setText("0");
String str = jb0.getText();
System.out.println(str);
}
});*/
//爲各按鈕添加事件處理
Text(jb0);
Text(jb1);
Text(jb2);
Text(jb3);
Text(jb4);
Text(jb5);
Text(jb6);
Text(jb7);
Text(jb8);
Text(jb9);
Text(bot);
Text(add);
Text(sub);
Text(mul);
Text(div);
//“=”按鈕的事件處理
equ.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
text.setText(text.getText()+equ.getText());
if(text.getText().contains("+")){//做加法運算
// String[] str1 = text.getText().split("+"); //錯誤語句
StringTokenizer st1 = new StringTokenizer(text.getText(),"+");
// System.out.println("str1======"+st1.nextToken());
double d1,d2 = 0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
// System.out.println("str2======"+st2.nextToken());
d2 = Double.parseDouble(st2.nextToken());
}
text.setText(text.getText()+" "+(d1+d2));
}else if(text.getText().contains("-")){//做減法運算
StringTokenizer st1 = new StringTokenizer(text.getText(),"-");
double d1,d2 = 0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2 = Double.parseDouble(st2.nextToken());
}
text.setText(text.getText()+" "+(d1-d2));
}else if(text.getText().contains("*")){//做乘法運算
StringTokenizer st1 = new StringTokenizer(text.getText(),"*");
double d1,d2 = 0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2 = Double.parseDouble(st2.nextToken());
}
text.setText(text.getText()+" "+(d1*d2));
}else if(text.getText().contains("/")){//做除法運算
StringTokenizer st1 = new StringTokenizer(text.getText(),"/");
double d1,d2 = 0;
d1 = Double.parseDouble(st1.nextToken());
while(st1.hasMoreTokens()){
StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
d2 = Double.parseDouble(st2.nextToken());
}
text.setText(text.getText()+" "+(d1/d2)); //將運算結果放到text區域
}
}
});
}
//各按鈕的事件處理方法
public void Text(JButton button){
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
// text.setText("0");
String str = button.getText();
// System.out.println(str);
text.setText(text.getText()+str);
}
});
// return button.getText();
}
//主函數
public static void main(String[] args) {
// TODO Auto-generated method stub
new JiSuan();
}
}
寫的這個計算器雖然功能不算完善,不過可以實現基本的加減乘除。
運行結果如下圖所示: