import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*@xiaoluge2012
*QQ:1412725135
*简单四则运算计算器
*/
public class Calculator extends JFrame{
/**
* 创建窗口上面的组件
*/
private JButton Num0,Num1,Num2,Num3,Num4,Num5,Num6,Num7,Num8,Num9,Add,Cut,ride,divide,same;//数字按键
private JPanel NumPanel,OPpanel;//两个面板
private JTextField InputText;//输入框
private double number1,number2;//两个输入值
private boolean B_same=false;//判断等号是否被按过
private int xxx=1;//判断等于之前用的是什么运算符
public void luncheFrame(){
/**
* 主界面
*/
setSize(250,200);
setResizable(false);
setTitle("简单四则运算");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//处理上面部分
InputText=new JTextField();
//处理中间部分
Num1=new JButton("1");
Num2=new JButton("2");
Num3=new JButton("3");
Num4=new JButton("4");
Num5=new JButton("5");
Num6=new JButton("6");
Num7=new JButton("7");
Num8=new JButton("8");
Num9=new JButton("9");
Add=new JButton("+");
Cut=new JButton("-");
ride=new JButton("×");
divide=new JButton("÷");
same=new JButton("=");
Num0=new JButton("0");
NumPanel=new JPanel(new GridLayout(3,5));
NumPanel.add(Num9);
NumPanel.add(Num8);
NumPanel.add(Num7);
NumPanel.add(Add);
NumPanel.add(Cut);
NumPanel.add(Num6);
NumPanel.add(Num5);
NumPanel.add(Num4);
NumPanel.add(ride);
NumPanel.add(divide);
NumPanel.add(Num3);
NumPanel.add(Num2);
NumPanel.add(Num1);
NumPanel.add(Num0);
NumPanel.add(same);
//注册监听
Num0.addActionListener(new Mylisten());
Num1.addActionListener(new Mylisten());
Num2.addActionListener(new Mylisten());
Num3.addActionListener(new Mylisten());
Num4.addActionListener(new Mylisten());
Num5.addActionListener(new Mylisten());
Num6.addActionListener(new Mylisten());
Num7.addActionListener(new Mylisten());
Num8.addActionListener(new Mylisten());
Num9.addActionListener(new Mylisten());
Add.addActionListener(new Mylisten());
Cut.addActionListener(new Mylisten());
ride.addActionListener(new Mylisten());
divide.addActionListener(new Mylisten());
same.addActionListener(new Mylisten());
//添加两个面板到主窗口
add(InputText,"North");
add(NumPanel,"Center");
pack();
setVisible(true);
}
/**
* 内部类(监听)
*/
private class Mylisten implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(e.getSource()==Num0){
/**
* 如果按到"0" 先判断之前是否按过等号,如果按过就清楚输入框里面的数据,达到重新输入计算的效果
* 如果没有按过等号 说明正在输入数值,就让原来的数字+"0"达到一直输入数字的效果 下面的数字按键同理
*/
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("0");
}else{
InputText.setText(str+"0");
}
}
if(e.getSource()==Num1){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("1");
}else{
InputText.setText(str+"1");
}
}
if(e.getSource()==Num2){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("2");
}else{
InputText.setText(str+"2");
}
}
if(e.getSource()==Num3){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("3");
}else{
InputText.setText(str+"3");
}
}
if(e.getSource()==Num4){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("4");
}else{
InputText.setText(str+"4");
}
}
if(e.getSource()==Num5){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("5");
}else{
InputText.setText(str+"5");
}
}
if(e.getSource()==Num6){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("6");
}else{
InputText.setText(str+"6");
}
}
if(e.getSource()==Num7){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("7");
}else{
InputText.setText(str+"7");
}
}
if(e.getSource()==Num8){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("8");
}else{
InputText.setText(str+"8");
}
}
if(e.getSource()==Num9){
String str=InputText.getText();
if(B_same==true){
InputText.setText("");
B_same=false;
InputText.setText("9");
}else{
InputText.setText(str+"9");
}
}
if(e.getSource()==Add){
/**
* 如果按了"×" 就让xxx=1 告诉"="号 要计算乘法
* 然后获取输入框里面的字符转换为int 付给number1 其他运算符同理
*/
String str=InputText.getText();
number1=Integer.parseInt(str);
InputText.setText("");
xxx=1;//运算符为+
}
if(e.getSource()==Cut){
String str=InputText.getText();
number1=Integer.parseInt(str);
InputText.setText("");
xxx=2;//运算符为-
}
if(e.getSource()==ride){
String str=InputText.getText();
number1=Integer.parseInt(str);
InputText.setText("");
xxx=3;//运算符为X
}
if(e.getSource()==divide){
String str=InputText.getText();
number1=Integer.parseInt(str);
InputText.setText("");
xxx=4;//运算符为/
}
if(e.getSource()==same){
/**
* 如果按了等号 首先获取输入框里面的字符转化为int 然后赋值给number2
* 判断之前的运算符xxx这个变量的值 1为+ 2为- 3为× 4为÷
* 然后根据之前按的运算符来计算number1+number的值 然后赋值给sum
* 把sum转换为String 然后显示到输入框
* 最后把B_same这个变量值改为true 意思是告诉数字键 按过等号
*/
String str=InputText.getText();
number2=Integer.parseInt(str);
double sum;
if(xxx==1){
sum=number1+number2;
}else if(xxx==2){
sum=number1-number2;
}else if(xxx==3){
sum=number1*number2;
}else{
sum=number1/number2;
}
String str2=sum+"";
InputText.setText(str2);
B_same=true;
number1=0;
number2=0;
}
}
}
/**
* 主方法
*/
public static void main(String[] args){
Calculator cl=new Calculator();
cl.luncheFrame();//调用主界面
}
}