package b;
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 calulatorDemo {
public static void main(String[]args){
Calulator calu=new Calulator();
}
}
class Calulator extends JFrame{
private JButton clear_Button=new JButton("Clear");//清除按钮
private JButton Button[]=new JButton[16];//定义按钮数组对象
private JTextField name =new JTextField(30);//文本组件
private String button[]={"7","8","9","+","4","5","6","-","1","2","3","*","0",".","/","="};
public Calulator(){
super("欢迎来到编译的计算器!!!!!");
for(int i=0;i<button.length;i++){
Button[i]=new JButton(button[i]);
}
JPanel pan=new JPanel();//定义面板
JPanel pan2=new JPanel();
pan.setLayout(new GridLayout(4,4,5,5));//布局管理器1,设置为格子面板
for(int j=0;j<Button.length;j++){
pan.add(Button[j]);//按钮添加到面板1中
}
for(int t=0;t<Button.length-1;t++){
Button[t].addActionListener(new ActionListener(){//添加到按钮事件
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
name.setText(name.getText()+e.getActionCommand());//设置文本面板,添加按钮
}
});
}
pan2.setLayout(new BorderLayout());//面板2布局模式为方向
pan2.add(name, BorderLayout.WEST);//将文本组件加入面板西边
pan2.add(clear_Button, BorderLayout.EAST);
clear_Button.addActionListener(new ActionListener(){//定义清除按钮清空文本区域
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
name.setText("");
}
});//按钮满足的条件
//等号按钮控制的事件
Button[15].addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//name.setText(name.getText()+e.getActionCommand());
if(name.getText().contains("+")){//加法满足的算法
StringTokenizer string1 = new StringTokenizer(name.getText(),"+"); //分解字符串
double d1=0;
while(string1.hasMoreTokens()){//StringTokenizer的构造方法
d1=d1+Double.parseDouble(string1.nextToken());
}
name.setText(name.getText()+e.getActionCommand()+d1);
}
if(name.getText().contains("-")){
StringTokenizer string2=new StringTokenizer(name.getText(),"-");
double d2=0;
while(string2.hasMoreTokens()){
d2=(-Double.parseDouble(string2.nextToken()))-d2;
}
name.setText(name.getText()+e.getActionCommand()+d2);
}
if(name.getText().contains("*")){
StringTokenizer string3=new StringTokenizer(name.getText(),"*");
double d3=1;
while(string3.hasMoreTokens()){
d3=d3*Double.parseDouble(string3.nextToken());
}
name.setText(name.getText()+e.getActionCommand()+d3);
}
if(name.getText().contains("/")){
StringTokenizer string4=new StringTokenizer(name.getText(),"/");
double d4=1,d5=1;
while(string4.hasMoreTokens()){
d4=Double.parseDouble(string4.nextToken())/Double.parseDouble(string4.nextToken());
}
name.setText(name.getText()+e.getActionCommand()+d4);
}
}
});
super.getContentPane().setLayout(new BorderLayout());
super.getContentPane().add(pan2, BorderLayout.NORTH);
super.getContentPane().add(pan, BorderLayout.CENTER);
super.setSize(400, 400);//窗体大小
super.setLocation(300,200);//窗体显示位置
super.setVisible(true);
}
}