import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Ca extends JFrame implements ActionListener
{
//***********************************************************************
//标准型计算器控件键钮
static JFrame f1 = new JFrame("计算器");
private
String KEYS[] = {"7","8","9","/","sqrt","4","5","6","*","%",
"1","2","3","-","1/x","0","+/-",".","+","="};
private
private
String M[] = {"
String COM[] = {"Backspace","CE","C"};
","MC","MR","MS","M+"};
private JButton keys[] = new JButton[KEYS.length];
private JButton com[] = new JButton[COM.length];
private JButton m[] = new JButton[M.length];
private JTextField result,hh,jj;
MenuBar menubar1=new MenuBar();
Menu edit=new Menu("编辑(E)"),
view=new Menu("查看(V)"),
help=new Menu("帮助(H)");
MenuItem copy=new MenuItem("复制(C)"),
paste=new MenuItem("粘贴(P)"),
standar=new MenuItem("标准型(T)"),
science=new MenuItem("科学型(S)"),
numgroup=new MenuItem("数字分组(I)"),
helpt=new MenuItem("帮助主题(H)"),
about=new MenuItem("关于计算器(A)");
private boolean firstDigit = true;
private double resultNum = 0.0,resultNum2 = 0.0;
private String operator = "=",co,str,operator2 = "=";
private boolean operateValidFlag = true;
//判断第一个输入的字符是否是数字
//中间结果
//***********************************************************************
//科学性计算器控件及按钮
static JFrame f2 = new JFrame("科学计算器");
private JTextField result2;
private
String[] KON = {"sta","F-E","(",")","MC","Ave","dms","Exp",
"In","MR","Sum","sin","x^y","log","MS","s","cos","x^3","n!",
"M+","Dat","tan","x^2","1/x","pi"};
private String[] KO = {"7","8","9","/","Mod","And",
"4","5","6","*","Or","Xor",
"1","2","3","-","Lsh","Not",
"0","+/-",".","+","=","Int",
"A","B","C","D","E","F"};
String ITM[]={"标准型","科学型","十六进制数(H) F5","十进制(D) F6",
private
"八进制(O) F7","二进制(B) F8","四字(Q) F12","DWORD 值(R)F2","单字(W)F3","字节(Y) F4"
,"数字分组(I)"};
private final String[] COMM = {"Backspace","CE","C"};
private JButton comm[] = new JButton[COMM.length];
private JButton kon[] = new JButton[KON.length];
private JButton ko[] = new JButton[KO.length];
private MenuItem itm[] = new MenuItem[ITM.length];
private JPanel panel0,panel1,panel2,panel3,panel4,panel5,panel6;
Checkbox checkbox1,checkbox2,checkbox3,checkbox4;
MenuBar menubar2=new MenuBar();
//添加菜单条
Menu edit2=new Menu("编辑(E)"),
view2=new Menu("查看(V)"),
help2=new Menu("帮助(H)");
MenuItem copy2=new MenuItem("复制(C) Ctrl+C"),
past2=new MenuItem("粘贴(P) Ctrl+V"),
standar2=new MenuItem("标准型(T)"),
science2=new MenuItem("科学型(S)"),
numgroup2=new MenuItem("数字分组(I)"),
menuitem1=new MenuItem("十六进制数(H) F5"),
menuitem2=new MenuItem("十进制(D) F6"),
menuitem3=new MenuItem("八进制(O) F7"),
menuitem4=new MenuItem("二进制(B) F8"),
menuitem5=new MenuItem("四字(Q) F12"),
menuitem6=new MenuItem("DWORD 值(R)F2"),
menuitem7=new MenuItem("单字(W)F3"),
menuitem8=new MenuItem("字节(Y) F4"),
helpt2=new MenuItem("帮助主题(H)"),
about2=new MenuItem("关于计算器(A)");
//***********************************************************************
//构造函数
public Ca()
{
//标准型开始初始化********************
result = new JTextField("0.");
result.setHorizontalAlignment(JTextField.RIGHT); //文字右对齐
result.setEditable(false);
result.setBackground(Color.WHITE);
//设置为不可编辑
//设置颜色为白色
JPanel k0 = new JPanel();
k0.setLayout(new GridLayout(4,5,5,5));
for(int i = 0;i < KEYS.length;i++)
{
keys[i] = new JButton(KEYS[i]);
k0.add(keys[i]);
keys[i].setForeground(Color.blue);
}
keys[3].setForeground(Color.red);
keys[8].setForeground(Color.red);
keys[13].setForeground(Color.red);
keys[18].setForeground(Color.red);
keys[19].setForeground(Color.red);
JPanel c0 = new JPanel();
c0.setLayout(new GridLayout(1,3,5,5));
for(int i = 0;i < COM.length;i++)
{
com[i] = new JButton(COM[i]);
c0.add(com[i]);
com[i].setForeground(Color.red);
}
JPanel m0 = new JPanel();
m0.setLayout(new GridLayout(5,1,5,5));
for(int i = 0;i < M.length;i++)
{
m[i] = new JButton(M[i]);
m0.add(m[i]);
m[i].setForeground(Color.red);
}
m[0].setForeground(Color.black);
//f1 的监视器
for(int i = 0;i < KEYS.length;i++)
{
keys[i].addActionListener(this);
}
for(int i = 0;i < COM.length;i++)
{
com[i].addActionListener(this);
}
for(int i = 0;i < M.length;i++)
{
m[i].addActionListener(this);
}
//复制事件
copy.addActionListener(new ActionListener()
{
});
public void actionPerformed(ActionEvent e)
{
}
int count;
count=str.length();
if(count!=0)
co=result.getText();
else
System.out.println("没有可复制的对象");
//粘贴事件
paste.addActionListener(new ActionListener()
{
});
public void actionPerformed(ActionEvent e)
{
}
str=co;
result.setText(str);
//复制事件
copy2.addActionListener(new ActionListener()
{
});
public void actionPerformed(ActionEvent e)
{
}
int count;
count=str.length();
if(count!=0)
co=result2.getText();
else
System.out.println("没有可复制的对象");
//粘贴事件
past2.addActionListener(new ActionListener()
{
});
public void actionPerformed(ActionEvent e)
{
}
str=co;
result2.setText(str);
edit.add(copy);
edit.add(paste);
view.add(standar);
view.add(science);
view.addSeparator();
view.add(numgroup);
help.add(helpt);
help.addSeparator();
help.add(about);
menubar1.add(edit);
menubar1.add(view);
menubar1.add(help);
//整体布局
JPanel p1 = new JPanel();
p1.setLayout(new BorderLayout());
p1.add("North",c0);
p1.add("Center",k0);
JPanel p2 = new JPanel();
p2.setLayout(new BorderLayout());
p2.add("Center",result);
f1.setLayout(new BorderLayout(3,5));
f1.add("North",p2);
f1.add("Center",p1);
f1.add("West",m0);
f1.setBackground(Color.LIGHT_GRAY);
f1.setLocation(200,200);
f1.setMenuBar(menubar1);
f1.setVisible(true);
f1.setResizable(false);//不可最大化
f1.pack();
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//紧凑
//标准型初始化结束
//****************************************************
standar2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
f1.setVisible(true);
f2.setVisible(false);
//按钮不可操作
}});
science.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
f1.setVisible(false);
f2.setVisible(true);
//按钮不可操作
}});
//****************************************************
//科学性初始化开始
panel0=new JPanel();
panel1=new JPanel();
panel2=new JPanel();
panel3=new JPanel();
panel4=new JPanel();
panel5=new JPanel();
panel6=new JPanel();
panel0.setLayout(new GridLayout(1,4));
panel1.setLayout(new GridLayout(1,3,30,0));
panel2.setLayout(new GridLayout(1,2));
panel3.setLayout(new GridLayout(1,3,5,0));
panel4.setLayout(new GridLayout(5,5,5,5));
panel5.setLayout(new GridLayout(5,6,5,5));
panel6.setLayout(new FlowLayout(FlowLayout.LEFT));
result2 = new JTextField("0.",100);
//设置网格型布局管理器
//按钮左对齐
result2.setHorizontalAlignment(JTextField.RIGHT); //文字右对齐
//设置为文本不可编辑
result2.setEditable(false);
result2.setBackground(Color.WHITE);
//设置文本框颜色为白色
CheckboxGroup cbg1=new CheckboxGroup();
checkbox1=new Checkbox("十六进制",false,cbg1);
checkbox2=new Checkbox("十进制",true,cbg1);
checkbox3=new Checkbox("八进制",false,cbg1);
checkbox4=new Checkbox("二进制",false,cbg1);
panel0.add(checkbox1);
panel0.add(checkbox2);
panel0.add(checkbox3);
panel0.add(checkbox4);
CheckboxGroup cbg2=new CheckboxGroup();
panel1.add(new Checkbox("角度",true,cbg2));
panel1.add(new Checkbox("弧度",false,cbg2));
panel1.add(new Checkbox("梯度",false,cbg2));
JLabel HH = new JLabel("
panel2.add(new Checkbox("Inv",false));
panel2.add(new Checkbox("Hyp",false));
");
hh = new JTextField();
jj = new JTextField();
hh.setText(" ");
hh.setEditable(false);
jj.setText("
jj.setEditable(false);
");
panel2.add(hh);panel2.add(HH);panel2.add(jj);
panel6.add(result2);
edit2.add(copy2);
edit2.add(past2);
view2.add(standar2);
view2.add(science2);
view2.addSeparator();
view2.add(menuitem1);
view2.add(menuitem2);
view2.add(menuitem3);
view2.add(menuitem4);
view2.addSeparator();
view2.add(menuitem5);
view2.add(menuitem6);
view2.add(menuitem7);
view2.add(menuitem8);
view2.addSeparator();
view2.add(numgroup2);
help2.add(helpt2);
help2.addSeparator();
help2.add(about2);
menubar2.add(edit2);
menubar2.add(view2);
menubar2.add(help2);
for(int i = 0;i < COMM.length;i++)
{
comm[i] = new JButton(COMM[i]);
panel3.add(comm[i]);
comm[i].setForeground(Color.red);
}
for(int i = 0;i < KON.length;i++)
{
kon[i] = new JButton(KON[i]);
panel4.add(kon[i]);
kon[i].setForeground(Color.magenta);
}
kon[4].setForeground(Color.red);
kon[9].setForeground(Color.red);
kon[14].setForeground(Color.red);
kon[19].setForeground(Color.red);
kon[0].setForeground(Color.blue);
kon[24].setForeground(Color.blue);
kon[5].setForeground(Color.blue);
kon[10].setForeground(Color.blue);
kon[15].setForeground(Color.blue);
kon[20].setForeground(Color.blue);
for(int i = 0;i < KO.length;i++)
{
ko[i] = new JButton(KO[i]);
panel5.add(ko[i]);
ko[i].setForeground(Color.red);
}
ko[0].setForeground(Color.blue);