import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
public class jisuanqi extends JFrame implements ActionListener{
private float Num1,Num2,Num; //分别用来存储运算数和结果
private char sign; //存储输入的运算符
private double Num0;
//定义并初始化控件
private JPanel p1=new JPanel();
private JPanel p2=new JPanel();
private JPanel p3=new JPanel();
private JPanel p4=new JPanel();
private JPanel p5=new JPanel();
private JPanel p6=new JPanel();
private JPanel p7=new JPanel();
private JPanel p8=new JPanel();
private JPanel p9=new JPanel();
private JTextField text=new JTextField("0",20);//定义文本域初始值为0
private JButton clear=new JButton("清除");
private JButton b0=new JButton("0");
private JButton b1=new JButton("1");
private JButton b2=new JButton("2");
private JButton b3=new JButton("3");
private JButton b4=new JButton("4");
private JButton b5=new JButton("5");
private JButton b6=new JButton("6");
private JButton b7=new JButton("7");
private JButton b8=new JButton("8");
private JButton b9=new JButton("9");
private JButton a=new JButton("A");
private JButton b=new JButton("B");
private JButton c=new JButton("C");
private JButton d=new JButton("D");
private JButton e=new JButton("E");
private JButton f=new JButton("F");
private JButton dian=new JButton(".");
private JButton cheng=new JButton("*");
private JButton chu=new JButton("/");
private JButton jia=new JButton("+");
private JButton jian=new JButton("-");
private JButton deng=new JButton("=");
private JButton sqr=new JButton("sqrt");
private JButton mee=new JButton("^");
private JRadioButton ox=new JRadioButton("二进制",false);//初始
private JRadioButton bx=new JRadioButton("八进制",false);
private JRadioButton dx=new JRadioButton("十进制",true);
private JRadioButton hex=new JRadioButton("十六进制",false);
public jisuanqi(){
super("计算器");
setResizable(false);//屏蔽最大化
this.getContentPane().setLayout(new GridLayout(9,1));
this.getContentPane().add(p1);
this.getContentPane().add(p6);
this.getContentPane().add(p2);
this.getContentPane().add(p3);
this.getContentPane().add(p4);
this.getContentPane().add(p5);
this.getContentPane().add(p7);
this.getContentPane().add(p8);
this.getContentPane().add(p9);
//按钮布局
p1.add(text);
p6.setLayout(new BorderLayout());
p6.add("Center",clear);
p2.setLayout(new GridLayout(1,4));
p2.add(ox); p2.add(bx); p2.add(dx); p2.add(hex);
p3.setLayout(new GridLayout(1,4));
p3.add(b7); p3.add(b8); p3.add(b9); p3.add(a);
p4.setLayout(new GridLayout(1,4));
p4.add(b4); p4.add(b5); p4.add(b6); p4.add(b);
p5.setLayout(new GridLayout(1,4));
p5.add(b1); p5.add(b2); p5.add(b3); p5.add(c);
p7.setLayout(new GridLayout(1,4));
p7.add(dian); p7.add(b0); p7.add(mee); p7.add(d);
p8.setLayout(new GridLayout(1,4));
p8.add(jia); p8.add(jian); p8.add(sqr); p8.add(e);
p9.setLayout(new GridLayout(1,4));
p9.add(cheng); p9.add(chu); p9.add(deng);p9.add(f);
b0.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
a.addActionListener(this);
b.addActionListener(this);
c.addActionListener(this);
d.addActionListener(this);
e.addActionListener(this);
f.addActionListener(this);
a.setEnabled(false); //初始
b.setEnabled(false);
c.setEnabled(false);
d.setEnabled(false);
e.setEnabled(false);
f.setEnabled(false);
b0.addKeyListener(new KeyBoard());
b1.addKeyListener(new KeyBoard());
b2.addKeyListener(new KeyBoard());
b3.addKeyListener(new KeyBoard());
b4.addKeyListener(new KeyBoard());
b5.addKeyListener(new KeyBoard());
b6.addKeyListener(new KeyBoard());
b7.addKeyListener(new KeyBoard());
b8.addKeyListener(new KeyBoard());
b9.addKeyListener(new KeyBoard());
a.addKeyListener(new KeyBoard());
b.addKeyListener(new KeyBoard());
c.addKeyListener(new KeyBoard());
d.addKeyListener(new KeyBoard());
e.addKeyListener(new KeyBoard());
f.addKeyListener(new KeyBoard());
b0.setForeground(Color.blue);
b1.setForeground( Color.blue);
b2.setForeground( Color.blue);
b3.setForeground( Color.blue);
b4.setForeground( Color.blue);
b5.setForeground( Color.blue);
b6.setForeground( Color.blue);
b7.setForeground( Color.blue);
b8.setForeground( Color.blue);
b9.setForeground( Color.blue);
a.setForeground( Color.blue);
b.setForeground( Color.blue);
c.setForeground( Color.blue);
d.setForeground( Color.blue);
e.setForeground( Color.blue);
f.setForeground( Color.blue);
dian.setForeground( Color.blue);
clear.addActionListener(this);
jia.addActionListener(this);
jian.addActionListener(this);
cheng.addActionListener(this);
chu.addActionListener(this);
deng.addActionListener(this);
dian.addActionListener(this);
sqr.addActionListener(this);
mee.addActionListener(this);
clear.addKeyListener(new KeyBoard());
jia.addKeyListener(new KeyBoard());
jian.addKeyListener(new KeyBoard());
cheng.addKeyListener(new KeyBoard());
chu.addKeyListener(new KeyBoard());
deng.addKeyListener(new KeyBoard());
dian.addKeyListener(new KeyBoard());
sqr.addKeyListener(new KeyBoard());
mee.addKeyListener(new KeyBoard());
cheng.setForeground(Color.red);
chu.setForeground(Color.red);
jia.setForeground(Color.red);
jian.setForeground(Color.red);
deng.setForeground(Color.black);
sqr.setForeground(Color.red);
mee.setForeground(Color.red);
ox.addItemListener(new checkbox(2));
bx.addItemListener(new checkbox(8));
dx.addItemListener(new checkbox(10));
hex.addItemListener(new checkbox(16));
/*private */ButtonGroup tk=new ButtonGroup();
tk.add(ox);
tk.add(bx);
tk.add(dx);
tk.add(hex);
ox.setForeground(Color.black);
bx.setForeground(Color.black);
dx.setForeground(Color.black);
hex.setForeground(Color.black);
text.addKeyListener(new KeyBoard());
pack();show();
//窗口关闭
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
});
text.setEditable(false);//去掉文本的可编辑性
text.setHorizontalAlignment(text.RIGHT);//文本右对齐
}
public class checkbox implements ItemListener{
int k;
public checkbox(int kt){
k=kt;
}
public void itemStateChanged(ItemEvent ev)
{
//规定当进制转换时以前输入的运算符失效
//二进制
if (k==2)
{a.setEnabled(false);
b.setEnabled(false);
c.setEnabled(false);
d.setEnabled(false);
e.setEnabled(false);
f.setEnabled(false);
b9.setEnabled(false);
b8.setEnabled(false);
b7.setEnabled(false);
b6.setEnabled(false);
b5.setEnabled(false);
b4.setEnabled(false);
b3.setEnabled(false);
b2.setEnabled(false);
b1.setEnabled(true);
b0.setEnabled(true);
dian.setEnabled(false);
cheng.setEnabled(false);
chu.setEnabled(false);
jia.setEnabled(true);
jian.setEnabled(true);
sqr.setEnabled(false);
mee.setEnabled(false);
}
if (k==8)
{a.setEnabled(false);
b.setEnabled(false);
c.setEnabled(false);
d.setEnabled(false);
e.setEnabled(false);
f.setEnabled(false);
b9.setEnabled(false);
b8.setEnabled(false);
b7.setEnabled(true);
b6.setEnabled(true);
b5.setEnabled(true);
b4.setEnabled(true);
b3.setEnabled(true);
b2.setEnabled(true);
b1.setEnabled(true);
b0.setEnabled(true);
dian.setEnabled(false);
cheng.setEnabled(false);
chu.setEnabled(false);
jia.setEnabled(true);
jian.setEnabled(true);
sqr.setEnabled(false);
mee.setEnabled(false);
Num0=Double.parseDouble(text.getText());
Num0=Math.sqrt(Num0);
text.setText(""+Num0);
}
if(k==10)
{a.setEnabled(false);
b.setEnabled(false);
c.setEnabled(false);
d.setEnabled(false);
e.setEnabled(false);
f.setEnabled(false);
b9.setEnabled(true);
b8.setEnabled(true);
b7.setEnabled(true);
b6.setEnabled(true);
b5.setEnabled(true);
b4.setEnabled(true);
b3.setEnabled(true);
b2.setEnabled(true);
b1.setEnabled(true);
b0.setEnabled(true);
dian.setEnabled(true);
cheng.setEnabled(true);
chu.setEnabled(true);
jia.setEnabled(true);
jian.setEnabled(true);
sqr.setEnabled(true);
mee.setEnabled(true);
}
if(k==16)
{a.setEnabled(true);
b.setEnabled(true);
c.setEnabled(true);
d.setEnabled(true);
e.setEnabled(true);
f.setEnabled(true);
b9.setEnabled(true);
b8.setEnabled(true);
b7.setEnabled(true);
b6.setEnabled(true);
b5.setEnabled(true);
b4.setEnabled(true);
b3.setEnabled(true);
b2.setEnabled(true);
b1.setEnabled(true);
b0.setEnabled(true);
dian.setEnabled(false);
cheng.setEnabled(false);
chu.setEnabled(false);
jia.setEnabled(true);
jian.setEnabled(true);
sqr.setEnabled(false);
mee.setEnabled(false);
}
}}
//按钮事件
public void actionPerformed(ActionEvent e){
String input=e.getActionCommand();//定义input存储按钮点击产生的值
String str="0123456789ABCDEF";
String ysf="+-*^/";
//数字输入
if(str.indexOf(input)>=0){
if(text.getText().equals("0"))
text.setText(input);//若TextField中初始值为零则TextField中显示输入的数字
else
text.setText(text.getText()+input);//如果TextField中的值不是零则叠加
}
//小数点
else if(input.equals("."))
text.setText(text.getText()+input);
//求开根
else if(input.equals("sqrt")){
Num0=Double.parseDouble(text.getText());
Num0=Math.sqrt(Num0);
text.setText(""+Num0);
}
//运算符
else if(ysf.indexOf(input)>=0){
Num1=Float.parseFloat(text.getText());//输入运算符时Num1存储TextField中的值
text.setText("");
sign=ysf.charAt(ysf.indexOf(input));//sign读取输入的运算符
}
//等号
else if(input.equals("=")){
Num2=Float.parseFloat(text.getText());//Num2存储点击运算符后的数值
switch(sign){
//加法
case '+':{
Num=Num1+Num2;
text.setText(""+Num);
break;
}
//减法
case '-':{
Num=Num1-Num2;
text.setText(""+Num);
break;
}
//乘法
case '*':{
Num=Num1*Num2;
text.setText(""+Num);
break;
}
//除法
case '/':{
if(Num2==0)
text.setText("除数不能为零");//除数为零,则提示除数不能为零
else{
Num=Num1/Num2;
text.setText(""+Num);
break;
}
}
//求幂
case '^':{
int i=0;
float s=1;
for (i=1;i<=Num2;i++)
s=s*Num1;
Num=s;
text.setText(""+Num);
break;
}
}
}
//清除
else if(input.equals("清除")){
Num=' ';
Num1=' ';
Num2=' ';
sign=' ';
text.setText("0");
}
}
public static void main(String args[]){
jisuanqi jsq=new jisuanqi();
}
}
posted @
2007-12-28 08:22 小妮子 阅读(509) |
评论 (0) |
编辑 收藏