/*
计算器的最简单类型
姓名:彼岸花
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
class CalculatorFrame
{
private JFrame f1; //实例化顶级容器
private JPanel p1; //第一个面板放在north
private JPanel p2; //第二个面板放在center
private JTextField t1; //显示计算数字的文本框
private JButton[] arrbt; //运算符的button按钮集合
private String[] arrstr={"1","2","3","+","4",
"5","6","-","7","8","9","*",".","0","=","/"}; //所需要的按钮
private JButton jbt; // 实例化清空按钮
Double number; //第一个数记录数
String command=null; //第二个数记录数
public void init()
{
count ct=new count();
BorderLayout blt=new BorderLayout(5,5); //全局运用网格布局
f1=new JFrame("计算器");
f1.setLayout(blt);
f1.setResizable(false); //把窗体大小调为不可更改
p1=new JPanel();
t1=new JTextField();
t1.setColumns(20);
jbt=new JButton("CE");
p1.add(t1);
p1.add(jbt);//把文本框和清除按钮放在p1面板上然后放在north
jbt.addActionListener(ct);//对清除按钮进行监视
p2=new JPanel();
arrbt=new JButton[16];
p2.setLayout(new GridLayout(4,4,10,10));//在p2面板中实例化网格布局然后放入需要的按钮
for(Integer i=0;i<arrbt.length;i++) //用for循环把需要的按钮排在p2面板中
{
arrbt[i]=new JButton(arrstr[i]);
arrbt[i].addActionListener(ct); //对数字按钮 监视
p2.add(arrbt[i]);
}
f1.add(p1,BorderLayout.NORTH); //把p1面板放在顶级容器north
f1.add(p2,BorderLayout.CENTER); //把p2面板放在顶级容器center
f1.setBounds(800, 350, 300, 300); //设置窗口的大小和位置
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认窗口关闭运行关闭
f1.setVisible(true); //窗口可视化
}
class count implements ActionListener //连接按钮点击事件
{
@Override
public void actionPerformed(ActionEvent e) {
String input=((JButton)e.getSource()).getText(); //与button按钮进行事件连接
try
{
switch(input) //用switch语句进行数字控制
{
case"1":
case"2":
case"3":
case"4":
case"5":
case"6":
case"7":
case"8":
case"9":
case"0":
case".":
t1.setText(t1.getText()+input); //把数字输入到文本框中
break;
case"+":
case"-":
case"*":
case"/":
command=input; //第二个记录数再次进行记录
number=Double.parseDouble(t1.getText());//用第一记录数记录数字是进行+,-,*,/的那种运算
t1.setText(null);
break;
case"=":
Double dl=0.0; //用dl记录下两个数的运算值
if(command!=null)//当第二个数不为空的时候进行运算
{
switch(command)
{
case"+":
dl=number+Double.parseDouble(t1.getText());
break;
case"-":
dl=number-Double.parseDouble(t1.getText());
break;
case"*":
dl=number*Double.parseDouble(t1.getText());
break;
case"/":
dl=number/Double.parseDouble(t1.getText());
break;
}
number=dl;
t1.setText(dl.toString()); //以字符串形式输入到文本框中
}
break;
case"CE":
number=0.0;
t1.setText(null); //数据进行清除
default:
break;
}
}
catch(Exception ex)
{
t1.setText("您的输入有误");
}
}
}
}
public class javajisuanqi{
public static void main(String[] args) {
CalculatorFrame frm=new CalculatorFrame();
frm.init();
}
}