源代码如下所示:
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;} } }
|
运行结果如下