package s;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class computer extends JFrame implements ActionListener {
JFrame j;
public JTextField t;
JButton b1[]=new JButton[20],b2[]=new JButton[5];
MenuBar m;
MenuItem jm[]=new MenuItem[7],jmnotepad;
Menu m1,m2,m3;
JPanel p1,p2;
String ss="";
double value=0,result=0;
int point=0,weather=1,opreter,juge=1;
boolean b11=false;
computer(){
j=new JFrame("科学计算器");
t=new JTextField("0.0",28);
j.setSize(320,270);
j.setBackground(Color.gray);
j.setLayout(new FlowLayout());//布局
j.setResizable(false);
p1=new JPanel();
p2=new JPanel();
b1[0]=new JButton("7");
b1[1]=new JButton("8");
b1[2]=new JButton("9");
b1[3]=new JButton("/");
b1[4]=new JButton("sqrt");
b1[5]=new JButton("4");
b1[6]=new JButton("5");
b1[7]=new JButton("6");
b1[8]=new JButton("*");
b1[9]=new JButton("%");
b1[10]=new JButton("1");
b1[11]=new JButton("2");
b1[12]=new JButton("3");
b1[13]=new JButton("-");
b1[14]=new JButton("1/x");
b1[15]=new JButton("0");
b1[16]=new JButton("+/-");
b1[17]=new JButton(".");
b1[18]=new JButton("+");
b1[19]=new JButton("=");
m=new MenuBar(); //菜单
m1=new Menu("文件");
jmnotepad=new MenuItem("记事本");
jm[0]=new MenuItem("复制",new MenuShortcut('C'));
jm[0].setEnabled(false);
jm[1]=new MenuItem("粘贴",new MenuShortcut('V'));
jm[1].setEnabled(false);
jm[2]=new MenuItem("退出",new MenuShortcut('Q'));
jm[2].addActionListener(this);
m1.add(jmnotepad); ////////记事本
jmnotepad.addActionListener(this);
m1.add(jm[0]);
m1.add(jm[1]);
m1.addSeparator();
m1.add(jm[2]);
m2=new Menu("查看");
jm[4]=new MenuItem("科学计算型");
jm[4].addActionListener(this);
jm[5]=new MenuItem("标准型");
jm[5].addActionListener(this);
m2.add(jm[4]);
m2.add(jm[5]);
m3=new Menu("帮助");
jm[6]=new MenuItem("帮助主题");
jm[6].addActionListener(this);
m3.add(jm[6]);
m.add(m1);
m.add(m2);
m.add(m3);
j.setMenuBar(m);
j.add(t);
b2[0]=new JButton("sin");
b2[0].setToolTipText("sin中的参数为孤度");
b2[1]=new JButton("cos");
b2[1].setToolTipText("cos中的参数为孤度值");
b2[2]=new JButton("tan");
b2[2].setToolTipText("tan中的参数为孤度值");
b2[3]=new JButton("PI");
b2[3].setToolTipText("求出PI的值");
b2[4]=new JButton("C");
b2[4].setToolTipText("清楚文本框的内容");
for(int i=0;i<b2.length;i++){
b2[i].setForeground(Color.red);
b2[i].addActionListener(this);
p1.add(b2[i]);
}
j.add(p1);
p2.setLayout(new GridLayout(4,8,5,5));
for(int i=0;i<b1.length;i++){
b1[i].setForeground(Color.blue);
}
for(int i=0;i<b1.length;i++){
p2.add(b1[i]);}
j.add(p2);
for(int i=0;i<b1.length;i++){
b1[i].addActionListener(this);
}
j.setVisible(true);
}
public static void main(String[]args){ // ////调用
new computer();
}
public void actionPerformed(ActionEvent e){
juge++;
Object get=e.getSource();
if(get==b1[17]) // 求文本框架的内容
point++;
if(get==b1[0]||get==b1[1]||get==b1[2]||get==b1[5]||get==b1[6]||get==b1[7]||get==b1[10]||get==b1[11]||get==b1[12]||get==b1[15]||get==b1[17]){
if(point>1){
if(b11||juge==2)
t.setText("");
t.setText(t.getText());
b11=false;///JToolTit().getDefaultJToolkit().beep(b1[17]);
juge++;
}
else{
if(b11||juge==2)
t.setText("");
t.setText(t.getText()+e.getActionCommand());
b11=false;
juge++;
}
}
else{
value=Double.parseDouble(t.getText());
b11=false;
if(weather>1){ //第一个数以上的其它数的加、减、乘、除、求余
switch(opreter){
case 1: {result+=Double.parseDouble(t.getText());b11=true;opreter=-1;juge=0;break;}
case 2: {result-=Double.parseDouble(t.getText());b11=true;opreter=-1;juge=0;break;}
case 3: {result*=Double.parseDouble(t.getText());b11=true;opreter=-1;juge=0;break;}
case 4: {result%=Double.parseDouble(t.getText());b11=true;opreter=-1;juge=0;break;}
case 5: {result/=Double.parseDouble(t.getText());b11=true;opreter=-1;juge=0;break;}}
}
}
if(get==jmnotepad){ ////使用线程调用系统的记事本,标准型计算器
try{
Runtime.getRuntime().exec("notepad");}
catch(java.io.IOException ee1){}
}
if(get==jm[5]){
try{
Runtime.getRuntime().exec("calc");}
catch(Exception ee2){ee2.printStackTrace();}
}
if(get==jm[2]){
System.exit(0);}
if(get==jm[6]){ /////帮助
JDialog help=new JDialog(j,"计算器帮助主题");
help.add(new JLabel("计算器帮助主题"),BorderLayout.CENTER);
help.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent close){
System.exit(0);}
}); ////help.setDefaultCloseOperation(help.EXIT_ON_CLOSE);
help.setResizable(false);
help.setSize(200,130);
help.setVisible(true);
}
if(get==jm[4]){
JDialog copu=new JDialog(j,"科学计算器");
copu.add(new JLabel("科学计算器有待更新"),BorderLayout.CENTER);
copu.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent close){
System.exit(0);}
});
copu.setResizable(false);
copu.setSize(200,130);
copu.setVisible(true);
}
if(get==b2[0]) ///sin,cos,tan,求反,倒数的值,开平方根
{result=Math.sin(Double.parseDouble(t.getText()));b11=false;}
if(get==b2[1])
{result=Math.cos(Double.parseDouble(t.getText()));b11=false;}
else if(get==b2[2])
{result=Math.tan(Double.parseDouble(t.getText()));b11=false;}
else if(get==b1[4]){
if(Double.parseDouble(t.getText())<0){
t.setText("负数不能开根");
comput1 c=new comput1();
c.clear();}
else{
result=Math.sqrt(Double.parseDouble(t.getText()));
b11=false;
}
}
else if(get==b1[16])
{result=-value;b11=false;}
else if(get==b1[14]){
if(value==0){
t.setText("零无倒数");
comput1 c=new comput1();
c.clear();}
else
{result=1/value;b11=false;}
}
if(weather==1){ //第一个数的加、减、乘、除、求余
if(get==b1[18])
{result=value;weather+=2;opreter=1;b11=true;}
else if(get==b1[13])
{result=value;weather+=2;opreter=2;b11=true;}
else if(get==b1[8])
{result=value;weather+=2;opreter=3;b11=true;}
else if(get==b1[3])
{result=value;weather+=2;opreter=4;b11=true;}
else if(get==b1[9])
{result=value;weather+=2;opreter=5;b11=true;}
}
if(weather>1) //综合运算
if(get==b1[18])
{weather+=2;opreter=1;juge=0;b11=true;}
else if(get==b1[13])
{weather+=2;opreter=2;juge=0;b11=true;}
else if(get==b1[8])
{weather+=2;opreter=3;juge=0;b11=true;}
else if(get==b1[3])
{weather+=2;opreter=4;juge=0;b11=true;}
else if(get==b1[9])
{weather+=2;opreter=5;juge=0;b11=true;}
if(get==b2[4]){ /////清除,PI,结果
comput1 c=new comput1();
c.clear();
}
else if(get==b2[3])
t.setText(String.valueOf(Math.PI));
else if(get==b1[19])
{t.setText(String.valueOf(result));value=result;}
}
class comput1{ //清楚文本框架的内容
public void clear(){
value=0;
result=0;
t.setText("0.0");
ss="";
value=0;result=0;
point=0;weather=1;juge=1;
b11=false;}
}
}
|