java计算器源代码(仿win7)
- 格式:docx
- 大小:15.45 KB
- 文档页数:20
JAVA简易计算器程序源代码package myText;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;public class Calculator extends JFrame implements ActionListener{ private JPanel Panel1=new JPanel();private JPanel Panel2=new JPanel();private JTextField tfResult=new JTextField(25);private JLabel label=new JLabel("计算结果:");private String recentOperation=null;private String recentNum=null;private boolean isNew=true;public void addButton(Container c,String s){JButton b=new JButton(s);b.setFont(new java.awt.Font("SansSerif",0,12));b.setForeground(Color.red);b.setBorder(BorderFactory.createRaisedBevelBorder());c.add(b);b.addActionListener(this);}//end public void addButton(Container c,String s)public void actionPerformed(ActionEvent e){String s=e.getActionCommand();if(s.charAt(0)>='0'&&s.charAt(0)<='9'){if(!isNew){tfResult.setText(tfResult.getText()+s);}//end if(!isNew)else{tfResult.setText(s);}//end elseisNew=false;}//end if(s.charAt(0)>='0'&&s.charAt(0)<='9') else if(s.equals(".")){if(tfResult.getText().indexOf(".")!=-1)return;if(!isNew&&tfResult.getText()!=""){tfResult.setText(tfResult.getText()+".");}//end ifelse{tfResult.setText("0.");}//end elseisNew=false;}//end if(s.equals("."))else if(s.equals("=")){equalaction(e);}//end if(s.equals("="))else{if((tfResult.getText()).equals("")){return;}//endif((tfResult.getText()).equals(""))if(recentOperation!=null){equalaction(e);}//end if(recentOperation!=null) recentOperation=s;recentNum=tfResult.getText();isNew=true;}//end else}//end public void actionPerformed(ActionEvent e) void equalaction(ActionEvent e){if(recentOperation==null||recentNum==null||tfResult.getTex t().equals("")){ return;}//end if()double last=0,now=0;try{last=Double.parseDouble(recentNum);now=Double.parseDouble(tfResult.getText());}//end trycatch(NumberFormatException ne){recentOperation=null;recentNum=null;tfResult.setText("数据输入不合法");System.out.println("数据输入不合法");isNew=true;return;}//end catch(NumberFormatException ne)if(recentOperation.equals("+")){last+=now;}//end if(recentOperation.equals("+"))if(recentOperation.equals("-")){last-=now;}//endif(recentOperation.equals("-"))if(recentOperation.equals("*")){last*=now;}//endif(recentOperation.equals("*"))if(recentOperation.equals("/")){last/=now;}//endif(recentOperation.equals("/"))tfResult.setText(""+last);recentNum=tfResult.getText();recentOperation=null;isNew=true;}//end void equalaction(ActionEvent e)public Calculator(){tfResult.setBorder(BorderFactory.createLoweredBevelBorder ());tfResult.setEditable(false);tfResult.setText("0");tfResult.setHorizontalAlignment(SwingConstants.RIGHT);////本java源代码由839682048整理修改//////Panel1.add(label,FlowLayout.LEFT);Panel1.add(tfResult);////本java源代码由839682048整理修改///Panel2.setLayout(new GridLayout(4,4,2,2));String buttons="789/456*123-0.=+";for(int i=0;i<buttons.length();i++){< p="">addButton(Panel2,buttons.substring(i,i+1));}//end for()//本java源代码由839682048整理修改///this.getContentPane().add(Panel1,"North");this.getContentPane().add(Panel2,"Center");this.setResizable(false);this.setTitle("计算器");this.addWindowListener(newjava.awt.event.WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}//end public Calculator1()public static void main(String[]args){Calculator mf=new Calculator();mf.setBounds(200,200,400,400);mf.show();}//end main()}//end public class Calculator1extends JFrame implements ActionListener</buttons.length();i++){<>。
importjava.awt.*; //引入awt包importjavax.swing.*; //引入javax.swing包importjava.awt.event.*; //引入awt.event包public class TheCalculator extends WindowAdapter//程序框架继承自WindowAdapter类(窗体适配器){private JTextFieldJtext=new JTextField("");//程序初始化文本框的内容为空private JFrame f=new JFrame("计算器");//Jframe窗体名为“计算器”private String a=""; //声明变量类型private String b="";private String cal="";private boolean flag1=true; //声明变量flag1对象类型为布尔型private boolean flag2=false; //声明变量flag2对象类型为布尔型public void init() //初始化{String[] buttonValue = new String[]{"1","2","3","+","C","4","5","6","-","退格","7","8","9","*","1/x","0","+/-",".","/","="};Container contain = f.getContentPane();//初始化窗体JPanelJpan = new JPanel(); //实例化面板JButton[] Jbutton=new JButton[20]; //利用数组定义JBotton按钮contain.setLayout(new BorderLayout());Jpan.setLayout(new GridLayout(4,5)); //采用4行5列的网格布局Jtext.setHorizontalAlignment(JTextField.RIGHT);//文本域按右对齐的方式显示contain.add(Jtext,"North");//输入文字的面板整体靠北contain.add(Jpan);//添加Jpan到contain中Data num=new Data(); //实例化数据Result result=new Result(); //实例化计算结果Opertionopertion=new Opertion(); //实例化运算符Clear clear=new Clear(); //清零BackSpace backspace=new BackSpace(); //退格CountDown countdown=new CountDown(); //倒数Strains Strains=new Strains(); //相反数for(int i = 0;i <Jbutton.length;i++) //利用For循环添加按钮{Jbutton[i] = new JButton (buttonValue[i]);Jpan.add(Jbutton[i]); //依次将Jbutton数组中的数值添加到buttonValue的数组中if(i==3 || i==8 || i==13 ||i==18 ) //运算符所在位置Jbutton[i].addActionListener(opertion);if(i==0 || i==1 || i==2 || i==5 || i==6 || i==7|| i==10 || i==11 || i==12 || i==15 || i==17 )Jbutton[i].addActionListener(num);//数值所在位置if((i==3||i==4||i==8||i==9)||i==13||i==18||i==19)Jbutton[i].setForeground(new Color(255, 0, 0));elseJbutton[i].setForeground(new Color(0, 0, 255)); //控制按钮字体颜色}Jbutton[4].addActionListener(clear);Jbutton[9].addActionListener(backspace);Jbutton[14].addActionListener(countdown);Jbutton[16].addActionListener(Strains);Jbutton[19].addActionListener(result); //注册按钮事件监听器f.setSize(400,300); //设置窗体大小f.setVisible(true); //设置可见性f.addWindowListener( //采用匿名类实现窗口的正常关闭newWindowAdapter(){public void windowClosing(WindowEvent e) //响应窗口适配器{System.exit(0); //响应退出}});}class Data implements ActionListener //输入数据{public void actionPerformed(ActionEvent e){String m = Jtext.getText(); //m获取当前文本框内容String n = e.getActionCommand();//n获取按钮数值if(m.equals("")||m.equals("+")||m.equals("-")||m.equals("*")||m.equals("/")) Jtext.setText(n);else{if(flag2){Jtext.setText(n); //输出nflag2=false; //flag2的初始值为false}elseJtext.setText(m+n); //m、n合并,并输出,得到打一个要计算的数据}}}classOpertion implements ActionListener{public void actionPerformed(ActionEvent e){cal=e.getActionCommand();//运算符数值赋值给cal,并设置cal的初值为空if(flag1==true) //flag1初值为truea=Jtext.getText(); //计算的第一个数据保存在a字符串变量中Jtext.setText(cal); //运算符的数值复赋值给ca1flag1=false; //flag1赋值给false}}class Clear implements ActionListener //清零功能{public void actionPerformed(ActionEvent e){Jtext.setText("");}}class CountDown implements ActionListener //求倒数类{public void actionPerformed(ActionEvent e){ try{String s = e.getActionCommand(); //获取退格按钮的命令赋值给sString s1 = Jtext.getText(); //获得当前文本框内容赋值给s1if(s.equals("1/x"))s1 = new String (""+1/Double.parseDouble(s1));Jtext.setText(s1);}catch(Exception w){}}}class Strains implements ActionListener //求相反数类{public void actionPerformed(ActionEvent e){String s = e.getActionCommand(); //获取退格按钮的命令赋值给sString s1 = Jtext.getText(); //获得当前文本框内容赋值给s1if(s.equals("+/-"))s1=new String (""+(0-Double.parseDouble(s1)));Jtext.setText(s1);}}class BackSpace implements ActionListener //退格功能{public void actionPerformed(ActionEvent e){ try{String x = e.getActionCommand(); //获取退格按钮的命令赋值给xString y = Jtext.getText();//获得当前文本框内容赋值给yif(x.equals("退格"))y=new String (y.substring(0,y.length()-1)); //substring函数Jtext.setText(y);}catch(Exception w){}}}class Result implements ActionListener //计算并显示结果{public void actionPerformed(ActionEvent e){ try{double m; //将num1的数据类型定义Double型m=Double.parseDouble(a);//a强制转换成Double型,之后赋值给num1b=Jtext.getText(); //变量b得到当前的文本框内容double n; //将num2的数据类型定义Double型n=Double.parseDouble(b); //b强制转换成Double型,之后赋值给num2double result=0;if(n!=0){if(cal.equals("+"))result=m+n;if(cal.equals("-"))result=m-n;if(cal.equals("*"))result=m*n;String s1=Double.toString(result); //计算结果转换成字符串,输出至文本框Jtext.setText(s1);}if(cal.equals("/")){if(n==0) //num1是否等于0Jtext.setText("除数不能为0"); //文本框内显示“除数不能为0”else{result=m/n;String s1=Double.toString(result);Jtext.setText(s1);}}flag1=true; //将flag1赋值给trueflag2=true; //将flag2赋值给true}catch(Exception w){}}}public static void main(String[] args){TheCalculator count=new TheCalculator();count.init();}}。
java计算器源代码(仿win7)import java.awt.*;import javax.swing.*;import java.awt.event.*;class Cal extends JFrame implements ActionListener,MouseListener{JMenuBar menubar;JMenu menu_check,menu_edit,menu_help;JMenuItem menuitem_science,menuitem_check,menuitem_exit,menuitem_copy,menuitem_paste,menuitem1_copy,menuitem1_paste,menuitem_chelp,menuitem_about;JCheckBoxMenuItem menuitem_standard;JTextField ta1;int x,result2;double op1,op2,opall;private boolean end=false,flag=false,add=false,sub=false,cheng=false,chu=false,flagop2=false;JButton b_mc,b_mr,b_ms,b_mjia,b_mjian,b_tui,b_ce,b_c,b_jj,b_dui,b_7,b_8,b_9,b_chu,b_baifenhao,b_4,b_5,b_6,b_cheng,b_daoshu,b_1,b_2,b_3,b_jian,b_0,b_dian,b_jia,b_dengyu;JPanel p_all,p_button1,p_button2,p_txt,p1,p2,p3,p4,p5;private String str,resultstr;JPopupMenu popupmenu;Container con=this.getContentPane();Font font=new Font("微软雅黑",Font.PLAIN,12);Color color=new Color(120,220,120);Cal(String s){super(s);setSize(220,315);setResizable(false);setVisible(true);Dimension scr=Toolkit.getDefaultToolkit().getScreenSize();Dimension frm=this.getSize();setLocation((scr.width-frm.width)/2,(scr.height-frm.height)/2);Toolkit tk=Toolkit.getDefaultToolkit();//程序默认图标设置setIconImage(tk.createImage("D:\\sd.jpg"));setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//-----------------------------------------------------------------制作框架结构------------------------- //---------------------------------------菜单栏---------------------------menubar=new JMenuBar();menubar.setPreferredSize(new Dimension(frm.width,19));menu_check=new JMenu("查看(V)");menu_check.setFont(font);menu_check.setForeground(Color.black);menuitem_standard=new JCheckBoxMenuItem("标准型",true);menuitem_standard.setFont(font);menuitem_standard.setForeground(Color.black);menuitem_science=new JMenuItem("科学型");menuitem_science.setFont(font);menuitem_science.setForeground(Color.black);menuitem_check=new JMenuItem("查看分组");menuitem_check.setFont(font);menuitem_check.setForeground(Color.black);menuitem_exit=new JMenuItem("退出");menuitem_exit.setFont(font);menuitem_exit.setForeground(Color.black);menuitem_exit.addActionListener(this);menu_check.add(menuitem_standard);menu_check.add(menuitem_science);menu_check.addSeparator();menu_check.add(menuitem_check);menu_check.addSeparator();menu_check.add(menuitem_exit);menubar.add(menu_check);menu_edit=new JMenu("编辑(E)");menu_edit.setFont(font);menu_edit.setForeground(Color.black);menu_edit.setMnemonic(KeyEvent.VK_E);menuitem_copy=new JMenuItem("复制(C) ");menuitem_copy.setFont(font);menuitem_copy.setForeground(Color.black);menuitem_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_M ASK));menuitem_copy.addActionListener(this);menuitem_paste=new JMenuItem("粘贴(P) ");menuitem_paste.setFont(font);menuitem_paste.setForeground(Color.black);menuitem_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_M ASK));menuitem_paste.addActionListener(this);menu_edit.add(menuitem_copy);menu_edit.add(menuitem_paste);menubar.add(menu_edit);menu_help=new JMenu("帮助(H)");menu_help.setFont(font);menu_help.setForeground(Color.black);menuitem_chelp=new JMenuItem("查看帮助");menuitem_chelp.setFont(font);menuitem_chelp.setForeground(Color.black);menuitem_about=new JMenuItem("关于计算器");menuitem_about.setFont(font);menuitem_about.setForeground(Color.black);menuitem_about.addActionListener(this);menu_help.add(menuitem_chelp);menu_help.addSeparator();menu_help.add(menuitem_about);menubar.add(menu_help);setJMenuBar(menubar);//--------------------------------------文本框----------------------------------ta1=new JTextField("0");ta1.setFont(new Font("微软雅黑",Font.PLAIN,13));ta1.setEditable(false);//ta1.setOpaque(false);ta1.setHorizontalAlignment(JTextField.RIGHT);ta1.setPreferredSize(new Dimension((frm.width-26),45));ta1.addMouseListener(this);p_all=new JPanel();p_all.setPreferredSize(new Dimension((frm.width-6),250));//p_all.setBackground(color);p_all.setLayout(new FlowLayout(FlowLayout.CENTER,0,3));p_txt=new JPanel();p_txt.setPreferredSize(new Dimension((frm.width-6),53));p_txt.setLayout(new FlowLayout(FlowLayout.CENTER,0,7));p_txt.add(ta1);p_all.add(p_txt);con.add(p_all,BorderLayout.CENTER);//-------------------------------------按钮区----------------------------------p_button1=new JPanel();p_button1.setPreferredSize(new Dimension((frm.width-25),131)); p_button1.setLayout(new FlowLayout(FlowLayout.LEFT,0,3));p_all.add(p_button1);p1=new JPanel();p1.setPreferredSize(new Dimension((frm.width-25),127));p1.setLayout(new GridLayout(4,5,5,6));b_mc=new JButton("MC");b_mc.setFont(new Font("微软雅黑",Font.PLAIN,11));b_mc.setMargin(new Insets(0,0,0,0));b_mc.setForeground(Color.blue);b_mc.addActionListener(this);b_mr=new JButton("MR");b_mr.setFont(new Font("微软雅黑",Font.PLAIN,11));b_mr.setMargin(new Insets(0,0,0,0));b_mr.setForeground(Color.blue);b_mr.addActionListener(this);b_ms=new JButton("MS");b_ms.setFont(new Font("微软雅黑",Font.PLAIN,11));b_ms.setMargin(new Insets(0,0,0,0));b_ms.setForeground(Color.blue);b_ms.addActionListener(this);b_mjia=new JButton("M+");b_mjia.setFont(new Font("微软雅黑",Font.PLAIN,11));b_mjia.setMargin(new Insets(0,0,0,0));b_mjia.setForeground(Color.blue);b_mjia.addActionListener(this);b_mjian=new JButton("M-");b_mjian.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_mjian.setMargin(new Insets(0,0,0,0));b_mjian.setForeground(Color.blue);b_mjian.addActionListener(this);b_tui=new JButton("←");b_tui.setFont(new Font("微软雅黑",Font.BOLD,14));b_tui.setMargin(new Insets(0,0,0,0));b_tui.addActionListener(this);b_tui.setForeground(Color.red);b_ce=new JButton("CE");b_ce.setFont(new Font("微软雅黑",Font.PLAIN,11));b_ce.setMargin(new Insets(0,0,0,0));b_ce.setForeground(Color.red);b_ce.addActionListener(this);b_c=new JButton("C");b_c.setFont(new Font("微软雅黑",Font.PLAIN,11));b_c.setMargin(new Insets(0,0,0,0));b_c.setForeground(Color.red);b_c.addActionListener(this);b_jj=new JButton("±");b_jj.setFont(new Font("微软雅黑",Font.PLAIN,14));b_jj.setMargin(new Insets(0,0,0,0));b_jj.setForeground(Color.red);b_jj.addActionListener(this);b_dui=new JButton("√");b_dui.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_dui.setMargin(new Insets(0,0,0,0));b_dui.setForeground(Color.red);b_dui.addActionListener(this);b_7=new JButton("7");b_7.setFont(new Font("微软雅黑",Font.PLAIN,14));b_7.setMargin(new Insets(0,0,0,0));b_7.setForeground(Color.blue);b_7.setMnemonic(KeyEvent.VK_7);b_7.addActionListener(this);b_8=new JButton("8");b_8.setFont(new Font("微软雅黑",Font.PLAIN,14));b_8.setMargin(new Insets(0,0,0,0));b_8.setForeground(Color.blue);b_8.setMnemonic(KeyEvent.VK_8);b_8.addActionListener(this);b_9=new JButton("9");b_9.setMargin(new Insets(0,0,0,0));b_9.setForeground(Color.blue);b_9.setMnemonic(KeyEvent.VK_9);b_9.addActionListener(this);b_chu=new JButton("/");b_chu.setFont(new Font("微软雅黑",Font.PLAIN,14));b_chu.setMargin(new Insets(0,0,0,0));b_chu.setForeground(Color.red);b_chu.addActionListener(this);b_baifenhao=new JButton("%");b_baifenhao.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_baifenhao.setMargin(new Insets(0,0,0,0));b_baifenhao.setForeground(Color.blue);b_baifenhao.addActionListener(this);b_4=new JButton("4");b_4.setFont(new Font("微软雅黑",Font.PLAIN,14));b_4.setMargin(new Insets(0,0,0,0));b_4.setForeground(Color.blue);b_4.setMnemonic(KeyEvent.VK_4);b_4.addActionListener(this);b_5=new JButton("5");b_5.setFont(new Font("微软雅黑",Font.PLAIN,14));b_5.setMargin(new Insets(0,0,0,0));b_5.setForeground(Color.blue);b_5.setMnemonic(KeyEvent.VK_5);b_5.addActionListener(this);b_6=new JButton("6");b_6.setFont(new Font("微软雅黑",Font.PLAIN,14));b_6.setMargin(new Insets(0,0,0,0));b_6.setForeground(Color.blue);b_6.setMnemonic(KeyEvent.VK_6);b_6.addActionListener(this);b_cheng=new JButton("*");b_cheng.setFont(new Font("微软雅黑",Font.PLAIN,14));b_cheng.setMargin(new Insets(0,0,0,0));b_cheng.setForeground(Color.red);b_cheng.addActionListener(this);b_daoshu=new JButton("1/x");b_daoshu.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_daoshu.setMargin(new Insets(0,0,0,0));b_daoshu.setForeground(Color.blue);b_daoshu.addActionListener(this);b_1=new JButton("1");b_1.setMargin(new Insets(0,0,0,0));b_1.setForeground(Color.blue);b_1.setMnemonic(KeyEvent.VK_1);b_1.addActionListener(this);b_2=new JButton("2");b_2.setFont(new Font("微软雅黑",Font.PLAIN,14)); b_2.setMargin(new Insets(0,0,0,0));b_2.setForeground(Color.blue);b_2.setMnemonic(KeyEvent.VK_2);b_2.addActionListener(this);b_3=new JButton("3");b_3.setFont(new Font("微软雅黑",Font.PLAIN,14)); b_3.setMargin(new Insets(0,0,0,0));b_3.setForeground(Color.blue);b_3.setMnemonic(KeyEvent.VK_3);b_3.addActionListener(this);b_jian=new JButton("-");b_jian.setFont(new Font("微软雅黑",Font.PLAIN,14)); b_jian.setMargin(new Insets(0,0,0,0));b_jian.setForeground(Color.red);b_jian.addActionListener(this);b_0=new JButton("0");b_0.setFont(new Font("微软雅黑",Font.PLAIN,14)); b_0.setMargin(new Insets(0,0,0,0));b_0.setPreferredSize(new Dimension(75,27));b_0.setForeground(Color.blue);b_0.setMnemonic(KeyEvent.VK_0);b_0.addActionListener(this);JLabel L1=new JLabel();L1.setPreferredSize(new Dimension(5,3));b_dian=new JButton(".");b_dian.setFont(new Font("微软雅黑",Font.BOLD,14)); b_dian.setMargin(new Insets(0,0,0,0));b_dian.setPreferredSize(new Dimension(35,27));b_dian.setForeground(Color.blue);b_dian.addActionListener(this);JLabel L2=new JLabel();L2.setPreferredSize(new Dimension(5,3));b_jia=new JButton("+");b_jia.setFont(new Font("微软雅黑",Font.BOLD,14)); b_jia.setMargin(new Insets(0,0,0,0));b_jia.setPreferredSize(new Dimension(35,27));b_jia.setForeground(Color.red);b_jia.addActionListener(this);b_dengyu=new JButton("=");b_dengyu.setFont(new Font("微软雅黑",Font.BOLD,22));b_dengyu.setMargin(new Insets(0,0,0,0));b_dengyu.setPreferredSize(new Dimension(35,60));b_dengyu.setForeground(Color.blue);b_dengyu.addActionListener(this);p1.add(b_mc);p1.add(b_mr);p1.add(b_ms);p1.add(b_mjia);p1.add(b_mjian);p1.add(b_tui);p1.add(b_ce);p1.add(b_c);p1.add(b_jj);p1.add(b_dui);p1.add(b_7);p1.add(b_8);p1.add(b_9);p1.add(b_chu);p1.add(b_baifenhao);p1.add(b_4);p1.add(b_5);p1.add(b_6);p1.add(b_cheng);p1.add(b_daoshu);p_button1.add(p1);p_button2=new JPanel();p_button2.setPreferredSize(new Dimension((frm.width-24),65)); p_button2.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));p_all.add(p_button2);p2=new JPanel();p2.setPreferredSize(new Dimension(156,65));p2.setLayout(new FlowLayout(FlowLayout.LEFT,0,1));p3=new JPanel();p3.setPreferredSize(new Dimension(39,62));p3.setLayout(new FlowLayout(FlowLayout.LEFT,4,0));p_button2.add(p2);p_button2.add(p3);p4=new JPanel();p4.setPreferredSize(new Dimension(156,27));p4.setLayout(new GridLayout(1,4,5,5));p5=new JPanel();p5.setPreferredSize(new Dimension(156,39));p5.setLayout(new FlowLayout(FlowLayout.LEFT,0,5));p2.add(p4);p2.add(p5);p4.add(b_1);p4.add(b_2);p4.add(b_3);p4.add(b_jian);p5.add(b_0);p5.add(L1);p5.add(b_dian);p5.add(L2);p5.add(b_jia);p3.add(b_dengyu);//---------------------------------------快捷菜单对象-------------------------popupmenu=new JPopupMenu(); //快捷菜单对象menuitem1_copy=new JMenuItem("复制");menuitem1_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_ MASK));menuitem1_copy.addActionListener(this); //监视鼠标右击菜单”复制“popupmenu.add(menuitem1_copy);menuitem1_paste=new JMenuItem("粘贴");menuitem1_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));menuitem1_paste.addActionListener(this); //监视鼠标右击菜单”粘贴“popupmenu.add(menuitem1_paste);ta1.add(popupmenu);con.validate();validate();}//---------------------------------------功能区------------------------------------public void actionPerformed(ActionEvent e){if(e.getSource()==menuitem_about){JOptionPane.showMessageDialog(null,"这是一个模仿win7的计算器!欢迎改进,\n创作者:钟作明","仿win7计算器",RMATION_MESSAGE);}if(e.getSource()==menuitem1_copy){ta1.selectAll();ta1.copy();}else if(e.getSource()==menuitem1_paste){ta1.setEditable(true);ta1.setText("");ta1.paste();ta1.setEditable(false);}else if(e.getSource()==menuitem_copy){ta1.selectAll();ta1.copy();}else if(e.getSource()==menuitem_paste){ta1.setEditable(true);ta1.setText("");ta1.paste();ta1.setEditable(false);}else if(e.getSource()==menuitem_exit){System.exit(0);}else if(e.getSource()==b_ce){ta1.setEditable(true);ta1.setText("0");ta1.setEditable(false);}else if(e.getSource()==b_c){ta1.setEditable(true);ta1.setText("0");ta1.setEditable(false);}else if(e.getSource()==b_tui){String str=ta1.getText();StringBuffer s=new StringBuffer(str);int L=s.length();try{if(L!=1){s=s.deleteCharAt(L-1);}else{s=new StringBuffer("0");}}catch(Exception e1){}ta1.setText(String.valueOf(s));}//---------------------------------------------数字键----------------------------- if(e.getSource()==b_1){addString(1);}else if(e.getSource()==b_2){addString(2);}else if(e.getSource()==b_3){addString(3);}else if(e.getSource()==b_4){addString(4);}else if(e.getSource()==b_5){addString(5);}else if(e.getSource()==b_6){addString(6);}else if(e.getSource()==b_7){addString(7);}else if(e.getSource()==b_8){addString(8);}else if(e.getSource()==b_9){addString(9);}else if(e.getSource()==b_0){addString(0);}else if(e.getSource()==b_dian){StringBuffer s1=new StringBuffer(ta1.getText());StringBuffer dian=new StringBuffer(".");if(String.valueOf(s1).indexOf(".")==-1){s1.append(dian);}ta1.setText(String.valueOf(s1));}else if(e.getSource()==b_jj){String txt=ta1.getText();int result=Integer.parseInt(txt);if(txt.indexOf("-")==-1&&txt.length()>0){if(result!=0){txt="-"+txt;}}else{StringBuffer txt1=new StringBuffer(txt);txt1=txt1.deleteCharAt(0);txt=String.valueOf(txt1);}ta1.setText(txt);}else if(e.getSource()==b_dui){str=ta1.getText();Double d=Double.parseDouble(str);if(d>=0){double d1=Math.sqrt(d);String s = String.valueOf(d1);if(s.endsWith(".0")==true){int z=(int)d1;str=String.valueOf(z);}else{str=String.valueOf(d1);}ta1.setText(str);}else{JOptionPane.showMessageDialog(null,"根号底数不能为负数","提醒", RMATION_MESSAGE);}end=true;}else if(e.getSource()==b_baifenhao){str=ta1.getText();Double d=Double.parseDouble(str);ta1.setText(""+d/100);end=true;}else if(e.getSource()==b_daoshu){str=ta1.getText();Double d=Double.parseDouble(str);if(d!=0){ta1.setText(""+1/d);}else{JOptionPane.showMessageDialog(null,"除数不能为零","提醒", RMATION_MESSAGE);}end=true;}else if(e.getSource()==b_jia){str = ta1.getText();op1 = Double.parseDouble(str);end=true;x=0;opall=op1;flagop2=false;}else if(e.getSource()==b_jian){str = ta1.getText();op1 = Double.parseDouble(str);end=true;x=1;opall=op1;flagop2=false;}else if(e.getSource()==b_cheng){str = ta1.getText();op1 = Double.parseDouble(str);end=true;x=2;opall=op1;flagop2=false;}else if(e.getSource()==b_chu){str = ta1.getText();op1 = Double.parseDouble(str);end=true;x=3;opall=op1;flagop2=false;}else if(e.getSource()==b_dengyu){str = ta1.getText();if(flagop2==false){op2 = Double.parseDouble(str);flagop2=true;}switch(x){case 0 :opall=opall+op2;String s=String.valueOf(opall);if(s.endsWith(".0")==true){result2=(int)opall;resultstr=String.valueOf(result2);}else{resultstr=String.valueOf(opall);}ta1.setText(resultstr);break;case 1 :opall=opall-op2;s=String.valueOf(opall);if(s.endsWith(".0")==true){result2=(int)opall;resultstr=String.valueOf(result2);}else{resultstr=String.valueOf(opall);}ta1.setText(resultstr);break;case 2 :opall=opall*op2;s=String.valueOf(opall);if(s.endsWith(".0")==true){result2=(int)opall;resultstr=String.valueOf(result2);}else{resultstr=String.valueOf(opall);}ta1.setText(resultstr);break;case 3 :opall=opall/op2;s=String.valueOf(opall);if(s.endsWith(".0")==true){result2=(int)opall;resultstr=String.valueOf(result2);}else{resultstr=String.valueOf(opall);}ta1.setText(resultstr);break;}end=true;}}public void addString(int num){String s=null;s=String.valueOf(num);//如果end==true;,那么屏幕清空if(end==true){ta1.setText("0");end=false;}if((ta1.getText()).equals("0")){ta1.setText(s);}else{if(ta1.getText().length()<21){str=ta1.getText()+s;ta1.setText(str);}}}public void mouseClicked(MouseEvent mec){if(mec.getModifiers()==mec.BUTTON3_MASK){popupmenu.show(ta1,mec.getX(),mec.getY());}}public void mousePressed(MouseEvent ms){}public void mouseReleased(MouseEvent md){}public void mouseEntered(MouseEvent ms){}public void mouseExited(MouseEvent mex){}public void mouseDragged(MouseEvent med){}}public class Calculator {public static void main(String[] args) {// TODO Auto-generated method stubCal jishuanji=new Cal("计算器");}}。
JavaSwing实现仿win7计算器⾸先说明此代码的界⾯布局基本上参考了:由于后⾯的运算符处理操作实在难以理解。
所以后⾯事件的处理是⾃⼰改写的,我觉得这样⽐较好理解。
/****/package myJavaSwing;import javax.swing.JFrame;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import javax.swing.JButton;import javax.swing.JTextField;import javax.swing.JPanel;import java.awt.GridLayout;import java.awt.Color;import java.awt.BorderLayout;import java.awt.Container;/*** @author 花花*简介:仿windows7计算器*由于M键设计到存储器暂不⽀持M键的功能**/public class Calculator extends JFrame implements ActionListener {//计算器的三个功能键名字private final String COMMAND[]= {"Backspace","CE","C"};//计算计算⾯板上的键名private final String CALCULATE[]= {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};//计算器上的M键名private final String M[]= {" ","MC","MR","MS","M+"};//定义三个功能按钮JButton commands[]=new JButton[COMMAND.length];//定义计算⾯板班的按钮JButton calculate[]=new JButton[CALCULATE.length];//定义M按钮JButton m[]=new JButton[M.length];//结果⽂本框JTextField resultText=new JTextField();//计算结果private double result=0;//⽂本框中之前是否有输⼊private Boolean preferExist=false;//操作符private String op="=";//是否按了操作符private Boolean operate=false;//中间值。
用JAVA编写计算器程序(模拟Windows计算器)import java.awt.*;import ;public class Calculation extends WindowAdapter implements ActionListener{double dResult=0;double dNowInput=0;double dMemory;int n=0; //记载小数位数int nOperation=1; // 记录运算符类型int nBitsNum=0; //记录总共输入的位数boolean alreadyHaveDot=false; //已经有小数点?boolean keyAvailable=true;boolean alreadyClickedEqueal=false; //是否按下过"="?boolean isTempNowInput=false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值?Frame f;Panel p1,p2,p3,p4,p5,p6;TextField tf1,tf2;Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative; Button bBackspace,bCE,bC,bMR,bMS,bMC,bM;public void display(){f=new Frame("计算器");f.setSize(280,213);f.setLocation(200,200);f.setBackground(Color.LIGHT_GRAY);f.setResizable(false);f.setLayout(new BorderLayout(3,3));p1=new Panel(new GridLayout(1,3,5,5)); //用于存放backspace,ce,c三键p2=new Panel(new GridLayout(4,5,5,5)); //用于存放数字区及附近共20键, 此处间隙设置可能不合理,以后调整p3=new Panel(new GridLayout(5,1,5,5)); //用于存放MC,MR,MS,M+键及显示M状态文本框,此处间隙设置可能不合理,以后调整p4=new Panel(new FlowLayout()); //用于存放p1,p2p5=new Panel(new FlowLayout());p6=new Panel(new FlowLayout());p4.add(p1);p4.add(p2);tf1=new TextField(35); //存放显示区tf1.setText("0.");tf1.setEditable(false);p5.add(tf1);f.add(p5,BorderLayout.NORTH);f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);b1=new Button("1");b2=new Button("2");b3=new Button("3");b4=new Button("4");b5=new Button("5");如有你有帮助,请购买下载,谢谢!b6=new Button("6");b7=new Button("7");b8=new Button("8");b9=new Button("9");b0=new Button("0");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);b0.addActionListener(this);bDiv=new Button("/");bSqrt=new Button("sqrt");bMulti=new Button("*");bMinus=new Button("-");bPercent=new Button("%");bPlus=new Button("+");bReciprocal=new Button("1/x");bEqual=new Button("=");bDot=new Button(".");bNegative=new Button("+/-");bDiv.addActionListener(this);bSqrt.addActionListener(this);。
//定义计算的类import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JTextField;public class Caculate implements ActionListener { //设置属性private String data;private JTextField text;private String result = "0";private boolean start_new = false;private double last_value = 0;private String ope = "";private double value = 0;public String getResult (){return result;}//定义一个构造方法public Caculate(JTextField text){this.text = text;}@Override//按钮事件处理public void actionPerformed(ActionEvent cal) { // TODO Auto-generated method stubdata = cal.getActionCommand();data = data.trim();if("0123456789".indexOf(data) != -1){numButton(data);}else if (".".indexOf(data) != -1){dotButton(data);}else if ("+-*/".indexOf(data) != -1){operateButton(data);}else if ("=".indexOf(data)!=-1){equalButton();}//System.out.println(data);System.out.println(result);text.setText(result);}//计算程序private void numButton(String da){if(!start_new){result = result + da;}else{result = da;}while (result.startsWith("0")&&!result.startsWith("0.")&&result.length()>0){ result = result.substring(1);}start_new = false;}private void dotButton(String da){if(da.indexOf(".")!= -1){result = result + da;}}private void operateButton(String da){if(result.length()>0){last_value = Double.parseDouble(result);ope = da;start_new = true;}}private void equalButton(){value = Double.parseDouble(result);if(ope.equals("+")){result = String.valueOf(last_value + value);}else if(ope.equals("-")){result = String.valueOf(last_value - value);}else if(ope.equals("*")){result = String.valueOf(last_value * value);}else if(ope.equals("/")){if(value == 0){result = "ERROR";}else{result = String.valueOf(last_value / value);}}// 去掉结尾的“.0000...”if (result.matches(".+\\.0+")) {result = result.substring(0, stIndexOf("."));}// 设置状态start_new = true;ope = "";}}import javax.swing.JTextField;public class Culator {private static final String String = null;JTextField op;private String re;/*** @param args*/public static void main(String[] args) {Culator cul = new Culator();cul.init();// TODO Auto-generated method stub}public void init(){javax.swing.JFrame frame = new javax.swing.JFrame(); frame.setTitle("计算器");java.awt.FlowLayout f1= new java.awt.FlowLayout();frame.setLayout(f1);javax.swing.JMenuBar cai = createMB();frame.setJMenuBar(cai);javax.swing.JButton mc = new javax.swing.JButton("MC");op= new javax.swing.JTextField("0",25);//设置数字从右边开始显示op.setHorizontalAlignment(JTextField.RIGHT);//设置按钮javax.swing.JButton mr = new javax.swing.JButton("MR"); javax.swing.JButton ms = new javax.swing.JButton("MS"); javax.swing.JButton mp = new javax.swing.JButton("M+"); javax.swing.JButton mm = new javax.swing.JButton("M-"); javax.swing.JButton delete = new javax.swing.JButton(" ←"); javax.swing.JButton ce = new javax.swing.JButton("CE "); javax.swing.JButton c = new javax.swing.JButton(" C "); javax.swing.JButton pm = new javax.swing.JButton(" ± "); javax.swing.JButton r = new javax.swing.JButton(" √"); javax.swing.JButton seven = new javax.swing.JButton(" 7 "); javax.swing.JButton eight = new javax.swing.JButton(" 8 "); javax.swing.JButton nine = new javax.swing.JButton(" 9 ");javax.swing.JButton under = new javax.swing.JButton(" / ");javax.swing.JButton percent = new javax.swing.JButton(" % ");javax.swing.JButton four = new javax.swing.JButton(" 4 ");javax.swing.JButton five = new javax.swing.JButton(" 5 ");javax.swing.JButton six = new javax.swing.JButton(" 6 ");javax.swing.JButton and = new javax.swing.JButton(" * ");javax.swing.JButton ds = new javax.swing.JButton("1/x");javax.swing.JButton one = new javax.swing.JButton(" 1 ");javax.swing.JButton two = new javax.swing.JButton(" 2 ");javax.swing.JButton three = new javax.swing.JButton(" 3 ");javax.swing.JButton m = new javax.swing.JButton(" - ");javax.swing.JButton equal = new javax.swing.JButton(" = ");javax.swing.JButton zero = new javax.swing.JButton(" 0 ");javax.swing.JButton dot = new javax.swing.JButton(" . ");javax.swing.JButton plus = new javax.swing.JButton(" + ");//添加按钮frame.add(op);frame.add(mc);frame.add(mr);frame.add(ms);frame.add(mp);frame.add(mm);frame.add(delete);frame.add(ce);frame.add(c);frame.add(pm);frame.add(r);frame.add(seven);frame.add(eight);frame.add(nine);frame.add(under);frame.add(percent);frame.add(four);frame.add(five);frame.add(six);frame.add(and);frame.add(ds);frame.add(one);frame.add(two);frame.add(three);frame.add(m);frame.add(equal);frame.add(zero);frame.add(dot);frame.add(plus);frame.setSize(290,300);//实例化一个Caculate类Caculate cal = new Caculate(op);//增加监听op.addActionListener(cal);mc.addActionListener(cal);mr.addActionListener(cal);ms.addActionListener(cal);mp.addActionListener(cal);mm.addActionListener(cal);delete.addActionListener(cal);ce.addActionListener(cal);c.addActionListener(cal);pm.addActionListener(cal);r.addActionListener(cal);seven.addActionListener(cal);eight.addActionListener(cal);nine.addActionListener(cal);under.addActionListener(cal); percent.addActionListener(cal);four.addActionListener(cal);five.addActionListener(cal);six.addActionListener(cal);and.addActionListener(cal);ds.addActionListener(cal);one.addActionListener(cal);two.addActionListener(cal);three.addActionListener(cal);m.addActionListener(cal);equal.addActionListener(cal);zero.addActionListener(cal);dot.addActionListener(cal);plus.addActionListener(cal);frame.setDefaultCloseOperation(3); frame.setResizable(false);frame.setVisible(true);}//创建一个设置TextField窗口容的函数//public void setOp(String re){// op.setText(re);//}//创建一个常带有菜单的菜单条,就加到JFrame上显示private javax.swing.JMenuBar createMB(){//创建菜单条javax.swing.JMenuBar mb = new javax.swing.JMenuBar();//创建查看菜单javax.swing.JMenu view = new javax.swing.JMenu("查看(V)");//创建菜单项javax.swing.JMenuItem biaozhun = new javax.swing.JMenuItem("标准型"); javax.swing.JMenuItem kexue = new javax.swing.JMenuItem("科学型"); javax.swing.JMenuItem chengxu = new javax.swing.JMenuItem("程序员"); javax.swing.JMenuItem tongji = new javax.swing.JMenuItem("统计信息"); javax.swing.JMenuItem history = new javax.swing.JMenuItem("历史");//将菜单项添加到菜单上view.add(biaozhun);view.add(kexue);view.add(chengxu);view.add(tongji);view.add(history);//创建编辑菜单javax.swing.JMenu operation = new javax.swing.JMenu("编辑(O)");//创建菜单项javax.swing.JMenuItem copy = new javax.swing.JMenuItem("复制"); javax.swing.JMenuItem paste = new javax.swing.JMenuItem("黏贴"); javax.swing.JMenuItem hr = new javax.swing.JMenuItem("历史记录");//将菜单项添加到菜单上operation.add(copy);operation.add(paste);operation.add(hr);//创建帮助菜单javax.swing.JMenu help = new javax.swing.JMenu("帮助(H)");//创建帮助菜单项javax.swing.JMenuItem vh = new javax.swing.JMenuItem("查看帮助"); javax.swing.JMenuItem about = new javax.swing.JMenuItem("关于计算器"); //将菜单项添加到菜单上help.add(vh);help.add(about);//加上一个分隔条help.addSeparator();//将菜单添加到菜单条上mb.add(view);mb.add(operation);mb.add(help);return mb;} }。
计算器本计算器有显示过程和不显示过程两种功能,其中不显示过程为普通计算器,类似于windows自带的计算器;显示过程的,可以显示预算过程,其中包含所需应用的部分函数,以及格式化功能(最左上角,第一个键格式化,然后输入需要格式化的数位,然后点第二个数,显示格式化结果),当一次运算结束后,会在右边自动显示运算过程,并且运算过程处有保存,复制粘贴清除功能。
代码如下:主类:import ZF.*;public class JiSuanQi {public static void main(String[] args) {Calculator c = new Calculator("计算器");}}包ZF中的类:Calculator类package ZF;/*** 计算器布局界面*/import java.io.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;public class Calculator extends JFrame implements ActionListener {static int xg = 1;// 用于判断是否显示过程,初始状态为显示JSplitPane jsp1, jsp2, jsp3;static JTextField jtf;// 文本框static JTextArea jta;// 保存等的历史文本区public static String zc;// 用来暂时存储数字,实现第一个菜单选项JScrollPane JS;// 专门用于给文本区提供滚动条public static FileDialog load, save;// 声明引入对话框BufferedReader in;//FileReader reader;//JP1 jp1;JP2 jp2;JP3 jp3;JP4 jp4;JP5 jp5;// 菜单条JMenuBar mb;JMenu m0, m1, m2;JMenuItem m01, m02, m03, m04, m11, m12, m21, m22;public Calculator(String s) {super(s);Container con = getContentPane();// 桌面jp1 = new JP1();jp2 = new JP2();jp3 = new JP3();jp4 = new JP4();jp5 = new JP5();jta = new JTextArea();jta.setEditable(false);JS = new JScrollPane(jta);jsp1 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp1, jp2);jsp2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp3, JS);jsp3 = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp4, jp5);jtf = new JTextField();jtf.setText(String.valueOf(0));jtf.setEditable(false);jtf.setBackground(Color.white);load = new FileDialog(this, "读取历史运算过程", FileDialog.LOAD);load.setVisible(false);load.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {load.setVisible(false);}});save = new FileDialog(this, "保存历史运算过程", FileDialog.SAVE); save.setVisible(false);save.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {save.setVisible(false);}});// 菜单条mb = new JMenuBar();m0 = new JMenu("编辑");m1 = new JMenu("查看");m2 = new JMenu("帮助");m01 = new JMenuItem("复制");m02 = new JMenuItem("粘贴");m03 = new JMenuItem("读取");m04 = new JMenuItem("关闭");m01.addActionListener(this);m02.addActionListener(this);m03.addActionListener(this);m04.addActionListener(this);m11 = new JMenuItem("不显过程");m12 = new JMenuItem("显示过程");m11.addActionListener(this);m12.addActionListener(this);m21 = new JMenuItem("帮助主题");m22 = new JMenuItem("关于计算器");m21.addActionListener(this);m22.addActionListener(this);m0.add(m01);m0.add(m02);m0.add(m03);m0.add(m04);m1.add(m11);m1.add(m12);m2.add(m21);m2.addSeparator();m2.add(m22);mb.add(m0);mb.add(m1);mb.add(m2);setJMenuBar(mb);con.add(jtf, BorderLayout.NORTH);con.add(jsp1, BorderLayout.CENTER);con.add(jsp2, BorderLayout.EAST);con.add(jsp3, BorderLayout.WEST);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);setBounds(100, 100, 800, 260);setResizable(false);setVisible(true);validate();}public void actionPerformed(ActionEvent e) {if (!jtf.getText().equals("error")) {if (e.getSource() == m01) {zc = jtf.getText();} else if (e.getSource() == m02) {if (zc != null) {if (xg == 1) {if (jtf.getText().equals("0"))jtf.setText(zc);elsejtf.setText(jtf.getText() + zc);} elsejtf.setText(zc);}}}if (e.getSource() == m03) { //读取文件Calculator.load.setVisible(true);Calculator.jta.setText(null);String s;if(Calculator.load.getFile()!=null){try{File file=new File(Calculator.load.getDirectory(),Calculator.load.getFile());reader=new FileReader(file);in=new BufferedReader(reader);while((s=in.readLine())!=null){Calculator.jta.append(s+'\n');}in.close();reader.close();}catch(IOException e2){Calculator.jta.append("读取错误");} }} else if (e.getSource() == m04) {System.exit(0);} else if (e.getSource() == m11) {// 换窗体大小,同时换规则setSize(320, 260);remove(jsp2);remove(jsp3);JP2.sf = 0;jtf.setText(String.valueOf(0));xg = 0;// 改变菜单选项的可选性m03.setEnabled(false);m04.setEnabled(false);// 换对齐方式JP2.sf = 0;jtf.setEditable(false);jtf.setBackground(Color.white);jtf.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);validate();} else if (e.getSource() == m12) {setSize(800, 260);add(jsp2, BorderLayout.EAST);add(jsp3, BorderLayout.WEST);JP2.sf = 0;jtf.setText(String.valueOf(0));xg = 1;m03.setEnabled(true);m04.setEnabled(true);JP2.eg = 0;jtf.setEditable(false);jtf.setBackground(Color.white);jtf.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);validate();} else if (e.getSource() == m21) {JOptionPane.showMessageDialog(this,"本计算器以模仿Windows系统自带计算器为主,详情请参照系统计算器“帮助主题”。
java计算器源代码(仿win7)import java.awt.*。
import javax.swing.*。
import java.awt.event.*。
class Cal extends JFrame implements ActionListener,MouseListener{JMenuBar menubar。
JMenu menu_check,menu_edit,menu_help。
JMenuItem menuitem_science,menuitem_check,menuitem_exit,menuitem_copy, menuitem_paste,menuitem1_copy,menuitem1_paste,menuitem_chelp,menuitem_about。
JCheckBoxMenuItem menuitem_standard。
JTextField ta1。
int x,result2。
double op1,op2,opall。
private boolean end=false,flag=false,add=false,sub=false,cheng=false,chu=false,flagop2=false。
JButton b_mc,b_mr,b_ms,b_mjia,b_mjian,b_tui,b_ce,b_c,b_jj,b_dui,b_7,b_8,b_9,b_chu,b_baifenhao,b_4,b_5,b_6,b_cheng,b_daoshu,b_1,b_2,b_3,b_jian,b_0,b_dian,b_jia,b_dengyu。
JPanel p_all,p_button1,p_button2,p_txt,p1,p2,p3,p4,p5。
private String str,resultstr。
JPopupMenu popupmenu。
Container con=this.getContentPane()。
面向对象程序设计实验报告学院计算机科学与技术学院专业计算机科学与技术学号姓名指导教师2016 年 1 月 1 日一、实验目的参照Windows计算器功能,用java语言编写一个图形化计算器程序,实现加、减、乘、除等运算。
二、实验题目Java计算器的编写三、实验内容import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame implements ActionListener {//定义字符型数组,存放按钮字符private final String[] str = { "sqrt","+/-","CE","C","7", "8", "9", "/", "4", "5", "6", "*", "1","2", "3", "-", "0",".", "=", "+" };//定义按钮数组,用于实现上面的按钮字符JButton[] buttons = new JButton[str.length];//定义文本行,初始显示0JTextField display = new JTextField("0");//计算器构造函数public Calculator() {super("计算器");//panel1是集合了数字和运算符的面板JPanel panel1 = new JPanel(new GridLayout(5, 4)); for (int i = 0; i < str.length; i++) {//把按钮数组加进来buttons[i] = new JButton(str[i]);panel1.add(buttons[i]);}this.addWindowListener(new WinClose());//panel2是文本域和归零面板JPanel panel2 = new JPanel(new BorderLayout()); panel2.add("Center", display);getContentPane().setLayout(new BorderLayout());getContentPane().add("North", panel2);getContentPane().add("Center", panel1);// 为每个数字和运算符按钮添加事件监听器for (int i = 0; i < str.length; i++)buttons[i].addActionListener(this);//为文本域添加事件监听器display.addActionListener(this);//设置窗口位置setBounds(500, 200, 400, 400);//设置框架不能改变大小setResizable(false);//设置组件可见setVisible(true);//调整此窗口的大小,以适合其子组件的首选大小和布局 pack();}//value用来记录当前文本域的数值double value=0;public void actionPerformed(ActionEvent e) {String label = e.getActionCommand();if(label.equals("CE")){display.setText("");}else if(label.equals("C")){handleC();}else if(label.equals("sqrt")){value=Double.parseDouble(display.getText());if(value<0){display.setText("负数不存在平方根!");}else{value=Math.sqrt(value);display.setText(String.valueOf(value));}}else if(label.equals("+/-")){value=Double.parseDouble(display.getText())*(-1);display.setText(String.valueOf(value));}else if ("0123456789.".indexOf(label) >= 0)/*("0123456789.".indexOf(label) >= 0)意思是当前输入的数字是“0123456789”中的一个时,响应输入数字事件,和下面同效果* (label.equals("0")|| label.equals("1")|| label.equals("2")|| label.equals("3")|| label.equals("4")|| label.equals("5")|| label.equals("6")||label.equals("7")||label.equals("8")||label.equals("9")||label.equals("."))*/handleNumber(label);elsehandleOperator(label);}//设置布尔型变量,用于标记是否是第一次按下小数点,初始为是boolean isFirstDigit = true;//响应数字按钮public void handleNumber(String key) {if (isFirstDigit)display.setText(key);else if ((key.equals(".")) && (display.getText().indexOf(".") < 0))display.setText(display.getText() + ".");else if (!key.equals("."))display.setText(display.getText() + key);isFirstDigit = false;}//归零按钮C响应public void handleC() {display.setText("0");isFirstDigit = true;operator = "=";}Double number = 0.0;String operator = "=";//响应运算符按钮public void handleOperator(String key) {if (operator.equals("+")){number += Double.valueOf(display.getText()); display.setText(String.valueOf(number));}else if (operator.equals("-")){number -= Double.valueOf(display.getText()); display.setText(String.valueOf(number));}else if (operator.equals("*")){number *= Double.valueOf(display.getText());display.setText(String.valueOf(number));}else if (operator.equals("/")){if(Double.parseDouble(display.getText())==0){display.setText("error:除数不能为0");}else{number /= Double.valueOf(display.getText());display.setText(String.valueOf(number));}}else if (operator.equals("=")){number = Double.valueOf(display.getText()); display.setText(String.valueOf(number));}operator = key;isFirstDigit = true;}public static void main(String[] args) {//程序入口,新建计算器new Calculator();}}//实现窗口事件监听器接口class WinClose implements WindowListener{public void windowClosing(WindowEvent ev){System.exit(0);}public void windowsOpend(WindowEvent ev){}public void windowActivated(WindowEvent ev){}public void windowsDeactivated(WindowEvent ev){}public void windowClosed(WindowEvent ev){}public void windowIconified(WindowEvent ev){}public void windowDeiconified(WindowEvent ev){}@Overridepublic void windowDeactivated(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowOpened(WindowEvent e) {// TODO Auto-generated method stub}}四、实验结果及分析(一、)程序功能测试:1、加法、减法、乘法、除法测试:20+0.5=20.5100-10.5=89.520*20=4000/2=02/0报错1/2=0.52、Sqrt(开方)测试:√25=5 负数开方报错3、+/-测试:-2+1.5=-0.54、CE(清除当前输入项)和C(清除整个计算式)测试:计算10+20=30时输入10+22然后按下CE清除22,重新输入20。
计算器源代码一、计算器源代码文件名:computer1.javaimport java.awt.*;import java.awt.event.*;public class computer1 extends Frame implements ActionListener{//声明窗口类并实现动作事件接口。
Button n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;//声明数字按钮Button op,os,om,od,oe,oc;//声明操作按钮TextField tfd;//声明文本框String flg,rslt;//声明标志串、结果串Panel p1,p2,p3;//声明面板int i1,i2;float flt;computer1(){super("加减乘除计算器");n0 = new Button("0");//实现各按钮n1 = new Button("1");n2 = new Button("2");n3 = new Button("3");n4 = new Button("4");n5 = new Button("5");n6 = new Button("6");n7 = new Button("7");n8 = new Button("8");n9 = new Button("9");op = new Button("加");os = new Button("减");om = new Button("乘");od = new Button("除");oe = new Button("=");oc = new Button("c");tfd = new TextField(20);//实现文本框p1=new Panel();//实现各面板p2=new Panel();p3=new Panel();setLayout(new FlowLayout());//布局设计,用于安排按钮位置p1.add(n0);//将各数字按钮放入p1中p1.add(n1);p1.add(n2);p1.add(n3);p1.add(n4);p1.add(n5);p1.add(n6);p1.add(n7);p1.add(n8);p1.add(n9);p2.add(op);//将各操作按钮放入p2、p3中p2.add(os);p2.add(om);p2.add(od);p3.add(oe);p3.add(oc);setLayout(new BorderLayout());//布局设计,用于安排面板位置add("North",tfd);add("West",p1);add("Center",p2);add("East",p3);n0.addActionListener(this);//注册监听器到各按钮n1.addActionListener(this);n2.addActionListener(this);n3.addActionListener(this);n4.addActionListener(this);n5.addActionListener(this);n6.addActionListener(this);n7.addActionListener(this);n8.addActionListener(this);n9.addActionListener(this);op.addActionListener(this);os.addActionListener(this);om.addActionListener(this);od.addActionListener(this);oe.addActionListener(this);oc.addActionListener(this);addWindowListener(new closeWin());setSize(600,100);//确定窗口的尺寸setVisible(true);}public static void main (String args[]){new computer1();}public void actionPerformed(ActionEvent e){//处理鼠标事件的方法try{//异常处理if(e.getSource()==n0)//按数字键时tfd.setText(tfd.getText()+"0");if(e.getSource()==n1)tfd.setText(tfd.getText()+"1");if(e.getSource()==n2)tfd.setText(tfd.getText()+"2");if(e.getSource()==n3)tfd.setText(tfd.getText()+"3");if(e.getSource()==n4)tfd.setText(tfd.getText()+"4");if(e.getSource()==n5)tfd.setText(tfd.getText()+"5");if(e.getSource()==n6)tfd.setText(tfd.getText()+"6");if(e.getSource()==n7)tfd.setText(tfd.getText()+"7");if(e.getSource()==n8)tfd.setText(tfd.getText()+"8");if(e.getSource()==n9)tfd.setText(tfd.getText()+"9");if(e.getSource()==op){//按加号键时i1 = Integer.parseInt(tfd.getText());tfd.setText("");flg = "op";}if(e.getSource()==os){//按减号键时i1 = Integer.parseInt(tfd.getText());tfd.setText("");flg = "os";}if(e.getSource()==om){//按乘号键时i1 = Integer.parseInt(tfd.getText());tfd.setText("");flg = "om";}if(e.getSource()==od){//按除号键时i1 = Integer.parseInt(tfd.getText());tfd.setText("");flg = "od";}if(e.getSource()==oe){//按等号键时i2 = Integer.parseInt(tfd.getText());if(flg=="op"){rslt=Integer.toString(i1+i2);}if(flg=="os"){rslt=Integer.toString(i1-i2);}if(flg=="om"){rslt=Integer.toString(i1*i2);}if(flg=="od"){//除法需做小数处理flt=((float)i1)/((float)i2);rslt=Float.toString(flt);}tfd.setText(rslt);}if(e.getSource()==oc){//按清除键时tfd.setText("");flg = "";}}catch(Exception ex){}//扑捉到异常,但不进行处理}}class closeWin extends WindowAdapter{ //关闭窗口public void windowClosing(WindowEvent e){Frame frm=(Frame)(e.getSource());frm.dispose();System.exit(0);}}二、计算器界面三、修改后计算器界面。
package jsq;import class Test implements ActionListener { /****/JFrame f = new JFrame();JTextField tf = new JTextField("0.");JMenuBar bar=new JMenuBar();JMenu menuEdit=new JMenu("编辑(E)");JMenu menuView=new JMenu("查看(V)");JMenu menuHelp=new JMenu("帮助(H)");JMenuItem menuEditCopy=new JMenuItem("复制(C)");JMenuItem menuEditPaste=new JMenuItem("粘贴(V)");JMenuItem menuHelpAbout = new JMenuItem("关于计算器(A)");JPanel panel0 = new JPanel();JPanel panel2 = new JPanel();JPanel panel = new JPanel();JPanel panel3 = new JPanel();JPanel panel4 = new JPanel();JPanel panel5 = new JPanel();JButton btBk = new JButton(" Backspace");JButton btCe = new JButton("Ce");JButton btCl = new JButton("C");JButton bt7 = new JButton("7");JButton bt8 = new JButton("8"); JButton bt9 = new JButton("9"); JButton btDiv = new JButton("/"); JButton btSqrt = new JButton("sqrt"); JButton bt4 = new JButton("4"); JButton bt5 = new JButton("5"); JButton bt6 = new JButton("6"); JButton btMult = new JButton("*"); JButton btMol = new JButton(" % "); JButton bt1 = new JButton("1"); JButton bt2 = new JButton("2"); JButton bt3 = new JButton("3"); JButton btMinu = new JButton("-"); JButton btCoun = new JButton(" 1/x"); JButton bt0 = new JButton("0"); JButton btPoint = new JButton("."); JButton btEqual = new JButton("="); JButton btAdd = new JButton("+"); JButton btSign = new JButton(" +/-"); /***@param args*/public void init(){(panel0);(tf,"North");(bar);(menuEdit);(menuView);(menuHelp); (menuEditCopy); (menuEditPaste); (menuHelpAbout);(false);;}harAt(0)=='-'){("函数输入无效");}elseparseDouble()))));i = true;}harAt(0) == '0') {("零不能求倒数");i = true;}else {String s = (1 / ()));foreNum = ();(s);i = true;}}||(m) == '-')) {break;}if (isNumber == true) {;};}//实现复制else if(obj==menuEditCopy){copy=();}//实现粘贴else if (obj == menuEditPaste) {(copy);}//实现帮助主题else if(obj == menuHelpAbout){ImageIcon icon = new ImageIcon("src//Icons//");JLabel label = new JLabel(icon);(f,label,"帮助主题",;}}public static void main(String[] args) {// TODO自动生成方法存根try{());//UIManager统一管理}catch(Exception e) {();}Test t = new Test();();}}class MyWinLis implements WindowListener{public void windowActivated(WindowEvent arg0) {// TODO自动生成方法存根}public void windowClosed(WindowEvent arg0) {// TODO自动生成方法存根}public void windowClosing(WindowEvent arg0) { // TODO自动生成方法存根(0);}public void windowDeactivated(WindowEvent arg0) { // TODO自动生成方法存根}public void windowDeiconified(WindowEvent arg0) { // TODO自动生成方法存根}public void windowIconified(WindowEvent arg0) { // TODO自动生成方法存根}public void windowOpened(WindowEvent arg0) {// TODO自动生成方法存根}}。
这是用java编写的计算器的源代码,界面粗糙,在elipse中运行通过,就两个类:第一个类frame ,代码如下package jisuanqi;import java.awt.Color;import java.awt.Container;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Point;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextField;public class frame {static double aa=0;//寄存器static int bb=0;//判断是否为连续输入运算符static int cc=0;static char dd='d';//记录前一次运算符的值public static void main(String args[]){JFrame fm=new JFrame("计算器");fm.setSize(220,180);//fm.setMaximumSize(null);fm.setLocation(new Point(200,100));fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container container=fm.getContentPane();GridBagLayout layout=new GridBagLayout();container.setLayout(layout);GridBagConstraints gg=new GridBagConstraints();JTextField txt=new JTextField("0");txt.setHorizontalAlignment(JTextField.RIGHT);txt.setEditable(false);txt.setBackground(Color.white);gg.gridx=0;gg.gridy=0;gg.fill=GridBagConstraints.HORIZONTAL;gg.gridheight=1;gg.gridwidth=15;container.add(txt,gg);gg.fill=GridBagConstraints.NONE;gg.gridy=1;gg.gridwidth=2;JButton btn7=new JButton("7");Mylistener mylistener7 =new Mylistener(btn7.getText(),txt);btn7.addActionListener(mylistener7);container.add(btn7,gg);JButton btn8=new JButton("8");Mylistener mylistener8 =new Mylistener(btn8.getText(),txt); btn8.addActionListener(mylistener8);gg.gridx=2;container.add(btn8,gg);JButton btn9=new JButton("9");Mylistener mylistener9 =new Mylistener(btn9.getText(),txt); btn9.addActionListener(mylistener9);gg.gridx=4;container.add(btn9,gg);JButton btnc=new JButton("/");gg.gridx=6;container.add(btnc,gg);Mylistener mylistenerc =new Mylistener(btnc.getText(),txt); btnc.addActionListener(mylistenerc);JButton btnb=new JButton("B");gg.gridx=8;container.add(btnb,gg);Mylistener mylistenerb =new Mylistener(btnb.getText(),txt); btnb.addActionListener(mylistenerb);gg.gridx=0;gg.gridy=2;JButton btn4=new JButton("4");Mylistener mylistener4 =new Mylistener(btn4.getText(),txt); btn4.addActionListener(mylistener4);container.add(btn4,gg);JButton btn5=new JButton("5");gg.gridx=2;Mylistener mylistener5 =new Mylistener(btn5.getText(),txt); btn5.addActionListener(mylistener5);container.add(btn5,gg);JButton btn6=new JButton("6");gg.gridx=4;Mylistener mylistener6 =new Mylistener(btn6.getText(),txt); btn6.addActionListener(mylistener6);container.add(btn6,gg);JButton btncf=new JButton("*");gg.gridx=6;Mylistener mylistenercf =new Mylistener(btncf.getText(),txt); btncf.addActionListener(mylistenercf);container.add(btncf,gg);gg.gridx=8;Mylistener mylistenerce =new Mylistener(btnce.getText(),txt); btnce.addActionListener(mylistenerce);container.add(btnce,gg);gg.gridx=0;gg.gridy=3;JButton btn1=new JButton("1");container.add(btn1,gg);Mylistener mylistener1 =new Mylistener(btn1.getText(),txt); btn1.addActionListener(mylistener1);JButton btn2=new JButton("2");gg.gridx=2;Mylistener mylistener2 =new Mylistener(btn2.getText(),txt); btn2.addActionListener(mylistener2);container.add(btn2,gg);JButton btn3=new JButton("3");gg.gridx=4;Mylistener mylistener3 =new Mylistener(btn3.getText(),txt); btn3.addActionListener(mylistener3);container.add(btn3,gg);JButton btnjf=new JButton("-");gg.gridx=6;Mylistener mylistenerjf =new Mylistener(btnjf.getText(),txt); btnjf.addActionListener(mylistenerjf);container.add(btnjf,gg);JButton btncc=new JButton("C");gg.gridx=8;Mylistener mylistenercc =new Mylistener(btncc.getText(),txt); btncc.addActionListener(mylistenercc);container.add(btncc,gg);gg.gridx=0;gg.gridy=4;JButton btn0=new JButton("0");container.add(btn0,gg);Mylistener mylistenero =new Mylistener(btn0.getText(),txt); btn0.addActionListener(mylistenero);JButton btnqf=new JButton("+/-");gg.gridx=2;Mylistener mylistenerqf =new Mylistener(btnqf.getText(),txt); btnqf.addActionListener(mylistenerqf);container.add(btnqf,gg);gg.gridx=4;Mylistener mylistenerd =new Mylistener(btnd.getText(),txt);btnd.addActionListener(mylistenerd);container.add(btnd,gg);JButton btnjiaf=new JButton("+");gg.gridx=6;Mylistener mylistenerfff =new Mylistener(btnjiaf.getText(),txt);btnjiaf.addActionListener(mylistenerfff);container.add(btnjiaf,gg);JButton btndy=new JButton("=");gg.gridx=8;container.add(btndy,gg);Mylistener mylistenerdy =new Mylistener(btndy.getText(),txt);btndy.addActionListener(mylistenerdy);fm.setVisible(true);}}第二个类Mylistener 代码如下:package jisuanqi;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JTextField;public class Mylistener implements ActionListener {private String a;//button上的值private JTextField txt;//txt的引用Mylistener(String aa,JTextField txt){//构造方法this.a=aa;this.txt=txt;}void init(){frame.aa=0;//寄存器frame.bb=0;//判断是否为连续输入运算符=0;frame.dd='d';//记录前一次运算符的值this.txt.setText("0");}public void actionPerformed(ActionEvent e){System.out.println(a);if(a=="0"| a=="1"| a=="2" | a=="3"| a=="4"| a=="5"| a=="6"| a=="7" | a=="8" | a=="9" | a=="."){if(frame.bb!=0){this.txt.setText("0");frame.bb=0;}System.out.println("数字"+"b"+frame.bb);if(this.txt.getText().length()==1){//当前文本框里的字符串的长度为一if(a=="."){//当前输入为小数点this.txt.setText(this.txt.getText()+".");}else{//当前输入不为小数点if(this.txt.getText()=="0" & this.a=="0"){this.txt.setText("0");}else if(this.txt.getText().charAt(0)=='0'& this.a!="0"){this.txt.setText(a);}else if(this.txt.getText().charAt(0) != '0'){this.txt.setText(this.txt.getText()+a);}}}else{//当前文本框里的字符串的长度不为一if(a=="."){//当前输入是. 就查找txt的值中有不有 .if(this.txt.getText().indexOf('.')== -1){//没出现.this.txt.setText(this.txt.getText()+a);}else {//原字符串不变}}else{this.txt.setText(this.txt.getText()+a);}}}//**************************************************if(a=="+" | a=="-" | a=="*" | a=="/" ){frame.bb++;if(this.txt.getText().charAt(this.txt.getText().length()-1)=='.'){//处理以.结尾的字符串this.txt.setText(this.txt.getText().substring(0,this.txt.getText().length ()-1));}//如果字符串以.结尾就把字符串的最后以为抹去if(==0){//第一次输入运算符frame.aa=Double.valueOf(this.txt.getText()).doubleValue();=1;frame.dd=this.a.charAt(0);//记录前一次输入运算符的值}else{//在这里面进行四则运算//加法运算if(frame.dd=="+".charAt(0)){frame.aa+=Double.valueOf(this.txt.getText()).doubleValue();this.txt.setText(String.valueOf(frame.aa).toString());frame.dd=this.a.charAt(0);}else if(frame.dd=="-".charAt(0)){frame.aa-=Double.valueOf(this.txt.getText()).doubleValue();this.txt.setText(String.valueOf(frame.aa).toString());frame.dd=this.a.charAt(0);}else if(frame.dd=="*".charAt(0)){frame.aa*=Double.valueOf(this.txt.getText()).doubleValue();this.txt.setText(String.valueOf(frame.aa).toString());frame.dd=this.a.charAt(0);}else if(frame.dd=="/".charAt(0)){if(this.txt.getText().charAt(0)=="0".charAt(0)){//除零是不允许的System.out.println("被除数不能为零");this.init();}else{doubleff=Double.valueOf(this.txt.getText()).doubleValue();frame.aa=frame.aa/ff;this.txt.setText(String.valueOf(frame.aa).toString());frame.dd=this.a.charAt(0);}}}}if(a=="B"){if(this.txt.getText().length()==1 ){this.txt.setText("0");}if(this.txt.getText().length()!=1 &this.txt.getText().charAt(0)!='0'){this.txt.setText(this.txt.getText().substring(0,this.txt.getText().length ()-1));}}if(a=="+/-"){if(this.txt.getText().charAt(0)!='-'){this.txt.setText("-"+this.txt.getText());}else{this.txt.setText(this.txt.getText().substring(1));}}if(a=="E"){this.init();}if(a=="C"){this.txt.setText("0");}if(a=="="){if(!=0){if(frame.dd=="+".charAt(0)){frame.aa+=Double.valueOf(this.txt.getText()).doubleValue();this.txt.setText(String.valueOf(frame.aa).toString());//frame.dd=this.a.charAt(0);}else if(frame.dd=="-".charAt(0)){frame.aa-=Double.valueOf(this.txt.getText()).doubleValue();this.txt.setText(String.valueOf(frame.aa).toString());//frame.dd=this.a.charAt(0);}else if(frame.dd=="*".charAt(0)){frame.aa*=Double.valueOf(this.txt.getText()).doubleValue();this.txt.setText(String.valueOf(frame.aa).toString());//frame.dd=this.a.charAt(0);}else if(frame.dd=="/".charAt(0)){if(this.txt.getText().charAt(0)=="0".charAt(0)){//除零是不允许的System.out.println("被除数不能为零");this.init();}else{doubleff=Double.valueOf(this.txt.getText()).doubleValue();frame.aa=frame.aa/ff;this.txt.setText(String.valueOf(frame.aa).toString());//frame.dd=this.a.charAt(0);}}frame.aa=0;//寄存器frame.bb=1;//判断是否为连续输入运算符=0;frame.dd='d';}}}}。
java简单计算器代码Java简单计算器代码:```javaimport java.util.Scanner;public class Calculator {public static void main(String[] args) {Scanner input = new Scanner(System.in);double num1, num2, result = 0;char operator;System.out.print("请输入第一个数:");num1 = input.nextDouble();System.out.print("请输入运算符号(+、-、*、/):"); operator = input.next().charAt(0);System.out.print("请输入第二个数:");num2 = input.nextDouble();switch(operator) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;default:System.out.println("运算符输入错误,请重新输入!");return;}System.out.println("运算结果:" + num1 + operator + num2 + "=" + result);}}```列表:1. 首先,在程序中导入`java.util.Scanner`包,以便从控制台读取用户输入内容。
计算器模拟程序的Java代码计算器模拟程序的Java代码import java.awt.Button;import java.awt.Frame;import java.awt.GridLayout;import java.awt.Panel;import java.awt.*;import java.awt.event.*;import java.awt.event.ActionListener;import javax.swing.JFrame;import javax.swing.*;public class Cal extends JFrame{GridLayout gl3;Panel p0, p3;JTextField tf1;JButton b7, b8, b9, b10, b12,b13, b14,b15, b17, b18, b19, b20, b22, b24, b25, b26;StringBuffer str;// 显示屏所显示的字符串double x, y;// x和y都是运算数double sum=0;//加和double mul=1;//乘积double sub=0;//减差令其为输入的第一个值double dev;//除商令其为输入的第一个值boolean tag= true;boolean tag1= true;int z = -1,k;// Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"//static double m ;// 记忆的数字public Cal(){Container con=getContentPane();con.setLayout(new FlowLayout());gl3 = new GridLayout(4, 4, 15, 15);tf1 = new JTextField(30);// 显示屏tf1.setHorizontalAlignment(JTextField.RIGHT);tf1.setEnabled(false);tf1.setEditable(false);tf1.setText("0");tf1.addKeyListener(new Tt());b7 = new JButton("7");b7.setForeground(Color.blue);b7.addActionListener(new Bt());b8 = new JButton("8");b8.setForeground(Color.blue);b8.addActionListener(new Bt());b9 = new JButton("9");b9.setForeground(Color.blue);b9.addActionListener(new Bt());b10 = new JButton("/");b10.setForeground(Color.red);b10.addActionListener(new Bt());b12 = new JButton("4");b12.setForeground(Color.blue); b12.addActionListener(new Bt());b13 = new JButton("5");b13.setForeground(Color.blue); b13.addActionListener(new Bt());b14 = new JButton("6");b14.setForeground(Color.blue); b14.addActionListener(new Bt());b15 = new JButton("*");b15.setForeground(Color.red);b15.addActionListener(new Bt());b17 = new JButton("1");b17.setForeground(Color.blue); b17.addActionListener(new Bt());b18 = new JButton("2");b18.setForeground(Color.blue); b18.addActionListener(new Bt());b19 = new JButton("3");b19.setForeground(Color.blue);b19.addActionListener(new Bt());b20 = new JButton("-");b20.setForeground(Color.red);b20.addActionListener(new Bt());b22 = new JButton("0");b22.setForeground(Color.blue); b22.addActionListener(new Bt());b24 = new JButton(".");b24.setForeground(Color.blue); b24.addActionListener(new Bt());b25 = new JButton("+");b25.setForeground(Color.red);b25.addActionListener(new Bt());b26 = new JButton("=");b26.setForeground(Color.red);b26.addActionListener(new Bt());// 实例化四个面板p0 = new Panel();//p1 = new Panel();//p2 = new Panel();p3 = new Panel();//p4 = new Panel();// 创建一个空字符串缓冲区str = new StringBuffer();con.add(p0);con.add(p3);// 添加面板p0中的组件和设置其在框架中的位置和大小p0.add(tf1);p0.setBounds(10, 40, 280, 40);// 添加面板p1中的组件和设置其在框架中的位置和大小// 添加面板p2中的组件并设置其的框架中的位置和大小//p2.setLayout(gl2);//p2.add(b3);//p2.add(b4);//p2.add(b5);//p2.add(b6);//p2.setBounds(10, 110, 40, 150);// 添加面板p3中的组件并设置其在框架中的位置和大小p3.setLayout(gl3);// 设置p3的布局p3.add(b7);p3.add(b8);p3.add(b9);p3.add(b10);//p3.add(b11);p3.add(b12);p3.add(b13);p3.add(b14);p3.add(b15);//p3.add(b16);p3.add(b17);p3.add(b18);p3.add(b19);p3.add(b20);//p3.add(b21);p3.add(b22);//p3.add(b23);p3.add(b24);p3.add(b25);p3.add(b26);p3.setBounds(10, 100, 280, 150);// 添加面板p4中的组件和设置其在框架中的位置和大小// 设置框架中的布局为空布局并添加4个面板setLayout(null); add(p0);add(p3);//add(p4);setTitle("计算器");setResizable(false);// 禁止调整框架的大小// 匿名类关闭窗口addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e1) { System.exit(0); }});setBackground(Color.lightGray);setBounds(100, 100, 310, 300);setVisible(true);}class Bt implements ActionListener//z:0表示"+",1表示"-",2表示"*",3表示"/"public double ttt( ){switch( z ){case 0:sum = sum + y;y = sum;break;case 1:sub = sub - y;y = sub;break;case 2:mul = mul * y;y = mul;break;case 3:dev = dev / y;y = dev;break;}return y;}public void actionPerformed(ActionEvent e2){try {if (e2.getSource() == b25)// 单击加号按钮获得x 的值和z的值并清空y的值if ( z == 0 || z == -1 ){x = y;sum = sum + x;}else{sum = this.ttt( );}str.setLength(0);// 清空缓冲区以便接收新的另一个运算数tf1.setText("" + sum);z = 0;}else if (e2.getSource() == b20)// 单击减号按钮获得x的值和z 的值并清空y的值{if ( z == 1 || z == -1 ){x = y;if(tag == true){sub = x;tag = false;}else{sub = sub - x;}}else{sub = this.ttt( );}str.setLength(0);z = 1;tf1.setText("" + sub);}else if (e2.getSource() == b15)// 单击乘号按钮获得x的值和z 的值并清空y的值{if(z == 2 ||z == -1){x = y;mul = mul * x;}else{mul = this.ttt( );}str.setLength(0);tf1.setText("" + mul);z = 2;}else if (e2.getSource() == b10)// 单击除号按钮获得x的值和z 的值并空y的值{if(z == 3 ||z == -1){x = y;if(tag1 == true){dev = x;tag1 = false;}else{if(x==0){tf1.setText("除数不能为零");}else{dev = dev / x;}}}else{dev = this.ttt( );}str.setLength(0);tf1.setText("" + dev);z = 3;}else if (e2.getSource() == b26)// 单击等号按钮输出计算结果{str.setLength(0);switch (z) {case 0:tf1.setText("" + (sum + y));y =Double.parseDouble(tf1.getText().trim()); sum=0;break;case 1:tf1.setText("" + (sub -y));y =Double.parseDouble(tf1.getText().trim()); sub=0;tag = true;break;case 2:tf1.setText("" + (mul * y));y =Double.parseDouble(tf1.getText().trim()); mul=0;break;case 3:if (y == 0) {tf1.setText("除数不能为零");} else {tf1.setText("" + (dev / y));}y =Double.parseDouble(tf1.getText().trim()); dev=0;tag1 = true;break;}}else if (e2.getSource() == b24)// 单击"."按钮输入小数{if (tf1.getText().trim().indexOf('.') !=-1)// 判断字符串中是否已经包含了小数点{}else// 如果没数点有小{if (tf1.getText().trim().equals("0"))// 如果初时显示为0{str.setLength(0);// System.out.println(str);tf1.setText((str.append("0" +e2.getActionCommand())).toString());}else if(tf1.getText().trim().equals(""))// 如果初时显示为空则不做任何操作{}else{tf1.setText(str.append(e2.getActionCommand()).toString());}}y = 0d;}else// 选择的是其他的按钮{if (e2.getSource() == b22)// 如果选择的是"0"这个数字键{if (tf1.getText().trim().equals("0"))// 如果显示屏显示的为零不做操作{}else{tf1.setText(str.append(e2.getActionCommand()).toString());y =Double.parseDouble(tf1.getText().trim());}}//else if (e2.getSource() == b0)// 选择的是“BackSpace”按钮//{//if(!tf1.getText().trim().equals("0") )// 如果显示屏显示的不是零//{// if (str.length() != 1) {// tf1.setText(str.delete(str.length() - 1,// str.length()).toString());// } else {// tf1.setText("0");// str.setLength(0);// }//}// y =Double.parseDouble(tf1.getText().trim());//}else// 其他的数字键{tf1.setText(str.append(e2.getActionCommand()) .toString());y =Double.parseDouble(tf1.getText().trim());}}}catch (NumberFormatException e){tf1.setText("数字格式异常");}catch (StringIndexOutOfBoundsException e) { tf1.setText("字符串索引越界");}}}//构造键盘监听class Tt implements KeyListener{//String tmp="";public void keyPressed(KeyEvent arg0) {} public void keyReleased(KeyEvent arg0) {} public void keyTyped(KeyEvent e){if ( (e.getSource()) instanceof JTextField ){char keychar = e.getKeyChar();if(keychar<48||keychar>57){e.setKeyChar('\0');}else if (keychar==KeyEvent.VK_BACK_SPACE){ //e.setKeyChar('\0');}}}}public static void main(String args[]) {new Cal();}}。
计算器程序的源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends Frame implements ActionListener, WindowListener{private Container container;private GridBagLayout layout;private GridBagConstraints constraints;private JTextField displayField; //计算结果显示区private String lastCommand; //保存+,-,*,/,=命令0private double result; //保存计算结果private boolean start; //判断是否为数字的开始private JMenuBar menubar;private JMenuItem m_exit,m2_ejz,m2_bjz;private Dialog dialog;private Label label_dialog;private JButton button_sqrt,button_plusminus,button_CE,button_cancel,button_1,button_2,button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0, button_plus,button_minus,button_multiply,button_divide,button_point,button_equal,button_log,button_tan,button_cos,button_sin,button_exp;public Calculator() //构造方法设置布局、为按钮注册事件监听器{super("Calculator");this.setLocation(240,200);this.setSize(350,300);this.setResizable(true);this.setLayout(new GridLayout(7,1));this.addmyMenu(); //调用成员方法添加菜单displayField=new JTextField(30);this.add(displayField);displayField.setEditable(true);start=true;result=0;lastCommand = "=";JPanel panel0=new JPanel();panel0.setLayout(new GridLayout(1,4,4,4));JPanel panel1=new JPanel();panel1.setLayout(new GridLayout(1,5,4,4));this.add(panel1);button_sqrt=new JButton("sqrt");button_plusminus=new JButton("+/-");button_exp=new JButton("exp");button_CE=new JButton("C");button_cancel=new JButton("CE");JPanel panel2=new JPanel();panel2.setLayout(new GridLayout(1,5,4,4));this.add(panel2);button_7=new JButton("7");button_8=new JButton("8");button_9=new JButton("9");button_log=new JButton("log");button_divide=new JButton("/");JPanel panel3=new JPanel();panel3.setLayout(new GridLayout(1,5,4,4));this.add(panel3);button_4=new JButton("4");button_5=new JButton("5");button_6=new JButton("6");button_tan=new JButton("tan");button_multiply=new JButton("*");JPanel panel4=new JPanel();panel4.setLayout(new GridLayout(1,5,4,4));this.add(panel4);button_1=new JButton("1");button_2=new JButton("2");button_3=new JButton("3");button_cos=new JButton("cos");button_minus=new JButton("-");JPanel panel5=new JPanel();panel5.setLayout(new GridLayout(1,5,4,4));this.add(panel5);button_0=new JButton("0");button_point=new JButton(".");button_equal=new JButton("=");button_sin=new JButton("sin");button_plus=new JButton("+");panel1.add(button_sqrt);panel1.add(button_plusminus);panel1.add(button_exp);panel1.add(button_CE);panel1.add(button_cancel);panel2.add(button_7);panel2.add(button_8);panel2.add(button_9);panel2.add(button_log);panel2.add(button_divide);panel3.add(button_4);panel3.add(button_5);panel3.add(button_6);panel3.add(button_tan);panel3.add(button_multiply);panel4.add(button_1);panel4.add(button_2);panel4.add(button_3);panel4.add(button_cos);panel4.add(button_minus);panel5.add(button_0);panel5.add(button_point);panel5.add(button_equal);panel5.add(button_sin);panel5.add(button_plus);button_sqrt.addActionListener(this);button_plusminus.addActionListener(this);button_exp.addActionListener(this);button_CE.addActionListener(this);button_cancel.addActionListener(this);button_7.addActionListener(this);button_8.addActionListener(this);button_9.addActionListener(this);button_log.addActionListener(this);button_divide.addActionListener(this);button_4.addActionListener(this);button_5.addActionListener(this);button_6.addActionListener(this);button_tan.addActionListener(this);button_multiply.addActionListener(this);button_1.addActionListener(this);button_2.addActionListener(this);button_3.addActionListener(this);button_cos.addActionListener(this);button_minus.addActionListener(this);button_0.addActionListener(this);button_point.addActionListener(this);button_equal.addActionListener(this);button_sin.addActionListener(this);button_plus.addActionListener(this);this.addWindowListener(new WinClose()); //注册窗口监听器this.setVisible(true);}private void addmyMenu() //菜单的添加{JMenuBar menubar=new JMenuBar();this.add(menubar);JMenu m1=new JMenu("选项");JMenu m2=new JMenu("进制转换");JMenuItem m1_exit=new JMenuItem("退出");m1_exit.addActionListener(this);JMenuItem m2_ejz=new JMenuItem("二进制");m2_ejz.addActionListener(this);JMenuItem m2_bjz=new JMenuItem("八进制");m2_bjz.addActionListener(this);JMenu m3 = new JMenu(" 帮助");JMenuItem m3_Help = new JMenuItem("作者");m3_Help.addActionListener(this);dialog = new Dialog(this,"关于",true); //模式窗口 dialog.setSize(240,80);label_dialog = new Label("",Label.CENTER); //标签的字符串为空,居中对齐dialog.add(label_dialog);dialog.addWindowListener(this); //为对话框注册窗口事件监听器m1.add(m1_exit);menubar.add(m1);m2.add(m2_ejz);m2.add(m2_bjz);menubar.add(m2);m3.add(m3_Help);menubar.add(m3); }public void actionPerformed(ActionEvent e) //按钮的单击事件处理方法{if(e.getSource().equals(button_1)||e.getSource().equals(button_2)||e.getSource().equals(button_3)||e.getSource().equals(button_4)||e.getSource().equals(button_5)|| e.getSource().equals(button_6)||e.getSource().equals(button_7)|| e.getSource().equals(button_8)||e.getSource().equals(button_9) ||e.getSource().equals(button_0)||e.getSource().equals(button_point)||e.getSource().equals(button_plusmin us)||e.getSource().equals(button_cancel)||e.getSource().equals(button_CE)){ //非运算符的处理方法String input=e.getActionCommand();if (start){displayField.setText("");start=false;if(input.equals("+/-"))displayField.setText(displayField.getText()+"-");}if(!input.equals("+/-")){String str=displayField.getText();if(input.equals("C")) //退格键的实现方法{if(str.length()>0)displayField.setText(str.substring(0,str.length()-1));}else if(input.equals("CE")) //清零键的实现方法{displayField.setText("0");start=true;}elsedisplayField.setText(displayField.getText()+input);}}else if (e.getActionCommand()=="二进制") //二进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toBinaryString(n));}else if (e.getActionCommand()=="八进制") //八进制的转换{int n=Integer.parseInt(displayField.getText());displayField.setText(Integer.toOctalString(n));}else if (e.getActionCommand()=="退出") //选项中退出的处理方法{System.exit(0);}else if (e.getActionCommand()=="作者") //按下'帮助'菜单栏中用法的处理方法{label_dialog.setText("熊瑛琪制作 \n学号:080320618");dialog.setLocation(400,250);dialog.setVisible(true);}else //各运算符的识别{String command=e.getActionCommand();if(start){lastCommand=command;}else{calculate(Double.parseDouble(displayField.getText()));lastCommand=command;start=true;}}}public void calculate(double x) //各运算符的具体运算方法 {double d=0;if (lastCommand.equals("+"))result+= x;else if (lastCommand.equals("-"))result-=x;else if (lastCommand.equals("*"))result*=x;else if (lastCommand.equals("/"))result/=x;else if (lastCommand.equals("="))result=x;else if (lastCommand.equals("sqrt")){d=Math.sqrt(x);result=d;}else if (lastCommand.equals("exp")){d=Math.exp(x);result=d;}else if (lastCommand.equals("log")){d=Math.log(x);result=d;}else if (lastCommand.equals("tan")){d=Math.tan(x);result=d;}else if (lastCommand.equals("cos")){d=Math.cos(x);result=d;}else if (lastCommand.equals("sin")){d=Math.sin(x);result=d;}displayField.setText(""+ result);}public void windowClosing(WindowEvent e){if(e.getSource()==dialog)dialog.setVisible(false); //隐藏对话框elseSystem.exit(0);}public void windowOpened(WindowEvent e) { }public void windowActivated(WindowEvent e) { }public void windowDeactivated(WindowEvent e) { }public void windowClosed(WindowEvent e) { }public void windowIconified(WindowEvent e) { }public void windowDeiconified(WindowEvent e) { }public static void main(String args[]){Calculator calculator=new Calculator();}}class WinClose implements WindowListener{public void windowClosing(WindowEvent e) //单击窗口关闭按钮时触发并执行实现窗口监听器接口{System.exit(0); //结束程序运行}public void windowOpened(WindowEvent e){}public void windowActivated(WindowEvent e){}public void windowDeactivated(WindowEvent e){}public void windowClosed(WindowEvent e){}public void windowIconified(WindowEvent e){}public void windowDeiconified(WindowEvent e){}}程序运行在对程序进行测试时发现“sin”函数出现异常点击“sin”然后输入“90”出现以下情况经过对程序代码的检查发现在下面方法中public void calculate(double x) //各运算符的具体运算方法{double d=0;if (lastCommand.equals("+"))result+= x;else if (lastCommand.equals("-"))result-=x;else if (lastCommand.equals("*"))result*=x;else if (lastCommand.equals("/"))result/=x;else if (lastCommand.equals("="))result=x;else if (lastCommand.equals("sqrt")){d=Math.sqrt(x);result=d;}else if (lastCommand.equals("exp")){d=Math.exp(x);result=d;}else if (lastCommand.equals("log")){d=Math.log(x);result=d;}else if (lastCommand.equals("tan")){d=Math.tan(x);result=d;}else if (lastCommand.equals("cos")){d=Math.cos(x);result=d;}displayField.setText(""+ result); }发现遗漏以下代码else if (lastCommand.equals("sin")){d=Math.sin(x);result=d;}修改后再次进行测试输入“1.5707963”(约为0.5*pi)再键入“sin”得以下结果可见程序修改成功。
用JAVA编写计算器程序(模拟Windows计算器)import java.awt.*;import java.awt.event.*;public class Calculation extends WindowAdapter implements ActionListener{double dResult=0;double dNowInput=0;double dMemory;int n=0; //记载小数位数int nOperation=1; // 记录运算符类型int nBitsNum=0; //记录总共输入的位数boolean alreadyHaveDot=false; //已经有小数点?boolean keyAvailable=true;boolean alreadyClickedEqueal=false; //是否按下过"="?boolean isTempNowInput=false; //是否在计算出结果后直接按运算符将结果赋给了当前输入值?Frame f;Panel p1,p2,p3,p4,p5,p6;TextField tf1,tf2;Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative; Button bBackspace,bCE,bC,bMR,bMS,bMC,bM;public void display(){f=new Frame("计算器");f.setSize(280,213);f.setLocation(200,200);f.setBackground(Color.LIGHT_GRAY);f.setResizable(false);f.setLayout(new BorderLayout(3,3));p1=new Panel(new GridLayout(1,3,5,5)); //用于存放backspace,ce,c三键p2=new Panel(new GridLayout(4,5,5,5)); //用于存放数字区及附近共20键, 此处间隙设置可能不合理,以后调整p3=new Panel(new GridLayout(5,1,5,5)); //用于存放MC,MR,MS,M+键及显示M状态文本框,此处间隙设置可能不合理,以后调整p4=new Panel(new FlowLayout()); //用于存放p1,p2p5=new Panel(new FlowLayout());p6=new Panel(new FlowLayout());p4.add(p1);p4.add(p2);tf1=new TextField(35); //存放显示区tf1.setText("0.");tf1.setEditable(false);p5.add(tf1);f.add(p5,BorderLayout.NORTH);f.add(p4,BorderLayout.CENTER);f.add(p3,BorderLayout.WEST);b1=new Button("1");b2=new Button("2");b3=new Button("3");b4=new Button("4");b5=new Button("5");如有帮助,欢迎下载。
java计算器源代码(仿win7)import java.awt.*;import javax.swing.*;import java.awt.event.*;class Cal extends JFrame implements ActionListener,MouseListener{JMenuBar menubar;JMenu menu_check,menu_edit,menu_help;JMenuItem menuitem_science,menuitem_check,menuitem_exit,menuitem_copy,menuitem_paste,menuitem1_copy,menuitem1_paste,menuitem_chelp,menuitem_about;JCheckBoxMenuItem menuitem_standard;JTextField ta1;int x,result2;double op1,op2,opall;private boolean end=false,flag=false,add=false,sub=false,cheng=false,chu=false,flagop2=false;JButton b_mc,b_mr,b_ms,b_mjia,b_mjian,b_tui,b_ce,b_c,b_jj,b_dui,b_7,b_8,b_9,b_chu,b_baifenhao,b_4,b_5,b_6,b_cheng,b_daoshu,b_1,b_2,b_3,b_jian,b_0,b_dian,b_jia,b_dengyu;JPanel p_all,p_button1,p_button2,p_txt,p1,p2,p3,p4,p5;private String str,resultstr;JPopupMenu popupmenu;Container con=this.getContentPane();Font font=new Font("微软雅黑",Font.PLAIN,12);Color color=new Color(120,220,120);Cal(String s){super(s);setSize(220,315);setResizable(false);setVisible(true);Dimension scr=Toolkit.getDefaultToolkit().getScreenSize();Dimension frm=this.getSize();setLocation((scr.width-frm.width)/2,(scr.height-frm.height)/2);Toolkit tk=Toolkit.getDefaultToolkit();//程序默认图标设置setIconImage(tk.createImage("D:\\sd.jpg"));setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//-----------------------------------------------------------------制作框架结构-------------------------//---------------------------------------菜单栏---------------------------menubar=new JMenuBar();menubar.setPreferredSize(new Dimension(frm.width,19));menu_check=new JMenu("查看(V)");menu_check.setFont(font);menu_check.setForeground(Color.black);menuitem_standard=new JCheckBoxMenuItem("标准型",true); menuitem_standard.setFont(font);menuitem_standard.setForeground(Color.black);menuitem_science=new JMenuItem("科学型");menuitem_science.setFont(font);menuitem_science.setForeground(Color.black);menuitem_check=new JMenuItem("查看分组");menuitem_check.setFont(font);menuitem_check.setForeground(Color.black);menuitem_exit=new JMenuItem("退出");menuitem_exit.setFont(font);menuitem_exit.setForeground(Color.black);menuitem_exit.addActionListener(this);menu_check.add(menuitem_standard);menu_check.add(menuitem_science);menu_check.addSeparator();menu_check.add(menuitem_check);menu_check.addSeparator();menu_check.add(menuitem_exit);menubar.add(menu_check);menu_edit=new JMenu("编辑(E)");menu_edit.setFont(font);menu_edit.setForeground(Color.black);menu_edit.setMnemonic(KeyEvent.VK_E);menuitem_copy=new JMenuItem("复制(C) ");menuitem_copy.setFont(font);menuitem_copy.setForeground(Color.black);menuitem_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent. CTRL_MASK));menuitem_copy.addActionListener(this);menuitem_paste=new JMenuItem("粘贴(P) ");menuitem_paste.setFont(font);menuitem_paste.setForeground(Color.black);menuitem_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent .CTRL_MASK));menuitem_paste.addActionListener(this);menu_edit.add(menuitem_copy);menu_edit.add(menuitem_paste);menubar.add(menu_edit);menu_help=new JMenu("帮助(H)");menu_help.setFont(font);menu_help.setForeground(Color.black);menuitem_chelp=new JMenuItem("查看帮助");menuitem_chelp.setFont(font);menuitem_chelp.setForeground(Color.black);menuitem_about=new JMenuItem("关于计算器");menuitem_about.setFont(font);menuitem_about.setForeground(Color.black);menuitem_about.addActionListener(this);menu_help.add(menuitem_chelp);menu_help.addSeparator();menu_help.add(menuitem_about);menubar.add(menu_help);setJMenuBar(menubar);//--------------------------------------文本框----------------------------------ta1=new JTextField("0");ta1.setFont(new Font("微软雅黑",Font.PLAIN,13));ta1.setEditable(false);//ta1.setOpaque(false);ta1.setHorizontalAlignment(JTextField.RIGHT);ta1.setPreferredSize(new Dimension((frm.width-26),45));ta1.addMouseListener(this);p_all=new JPanel();p_all.setPreferredSize(new Dimension((frm.width-6),250));//p_all.setBackground(color);p_all.setLayout(new FlowLayout(FlowLayout.CENTER,0,3));p_txt=new JPanel();p_txt.setPreferredSize(new Dimension((frm.width-6),53));p_txt.setLayout(new FlowLayout(FlowLayout.CENTER,0,7));p_txt.add(ta1);p_all.add(p_txt);con.add(p_all,BorderLayout.CENTER);//-------------------------------------按钮区----------------------------------p_button1=new JPanel();p_button1.setPreferredSize(new Dimension((frm.width-25),131));p_button1.setLayout(new FlowLayout(FlowLayout.LEFT,0,3));p_all.add(p_button1);p1=new JPanel();p1.setPreferredSize(new Dimension((frm.width-25),127));p1.setLayout(new GridLayout(4,5,5,6));b_mc=new JButton("MC");b_mc.setFont(new Font("微软雅黑",Font.PLAIN,11));b_mc.setMargin(new Insets(0,0,0,0));b_mc.setForeground(Color.blue);b_mc.addActionListener(this);b_mr=new JButton("MR");b_mr.setFont(new Font("微软雅黑",Font.PLAIN,11));b_mr.setMargin(new Insets(0,0,0,0));b_mr.setForeground(Color.blue);b_mr.addActionListener(this);b_ms=new JButton("MS");b_ms.setFont(new Font("微软雅黑",Font.PLAIN,11));b_ms.setMargin(new Insets(0,0,0,0));b_ms.setForeground(Color.blue);b_ms.addActionListener(this);b_mjia=new JButton("M+");b_mjia.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_mjia.setMargin(new Insets(0,0,0,0));b_mjia.setForeground(Color.blue);b_mjia.addActionListener(this);b_mjian=new JButton("M-");b_mjian.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_mjian.setMargin(new Insets(0,0,0,0));b_mjian.setForeground(Color.blue);b_mjian.addActionListener(this);b_tui=new JButton("←");b_tui.setFont(new Font("微软雅黑",Font.BOLD,14));b_tui.setMargin(new Insets(0,0,0,0));b_tui.addActionListener(this);b_tui.setForeground(Color.red);b_ce=new JButton("CE");b_ce.setFont(new Font("微软雅黑",Font.PLAIN,11));b_ce.setMargin(new Insets(0,0,0,0));b_ce.setForeground(Color.red);b_ce.addActionListener(this);b_c=new JButton("C");b_c.setFont(new Font("微软雅黑",Font.PLAIN,11));b_c.setMargin(new Insets(0,0,0,0));b_c.setForeground(Color.red);b_c.addActionListener(this);b_jj=new JButton("±");b_jj.setFont(new Font("微软雅黑",Font.PLAIN,14)); b_jj.setMargin(new Insets(0,0,0,0));b_jj.setForeground(Color.red);b_jj.addActionListener(this);b_dui=new JButton("√");b_dui.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_dui.setMargin(new Insets(0,0,0,0));b_dui.setForeground(Color.red);b_dui.addActionListener(this);b_7=new JButton("7");b_7.setFont(new Font("微软雅黑",Font.PLAIN,14));b_7.setMargin(new Insets(0,0,0,0));b_7.setForeground(Color.blue);b_7.setMnemonic(KeyEvent.VK_7);b_7.addActionListener(this);b_8=new JButton("8");b_8.setFont(new Font("微软雅黑",Font.PLAIN,14));b_8.setMargin(new Insets(0,0,0,0));b_8.setForeground(Color.blue);b_8.setMnemonic(KeyEvent.VK_8);b_8.addActionListener(this);b_9=new JButton("9");b_9.setFont(new Font("微软雅黑",Font.PLAIN,14));b_9.setMargin(new Insets(0,0,0,0));b_9.setForeground(Color.blue);b_9.setMnemonic(KeyEvent.VK_9);b_9.addActionListener(this);b_chu=new JButton("/");b_chu.setFont(new Font("微软雅黑",Font.PLAIN,14));b_chu.setMargin(new Insets(0,0,0,0));b_chu.setForeground(Color.red);b_chu.addActionListener(this);b_baifenhao=new JButton("%");b_baifenhao.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_baifenhao.setMargin(new Insets(0,0,0,0));b_baifenhao.setForeground(Color.blue);b_baifenhao.addActionListener(this);b_4=new JButton("4");b_4.setFont(new Font("微软雅黑",Font.PLAIN,14));b_4.setMargin(new Insets(0,0,0,0));b_4.setForeground(Color.blue);b_4.setMnemonic(KeyEvent.VK_4);b_4.addActionListener(this);b_5=new JButton("5");b_5.setFont(new Font("微软雅黑",Font.PLAIN,14));b_5.setMargin(new Insets(0,0,0,0));b_5.setForeground(Color.blue);b_5.setMnemonic(KeyEvent.VK_5);b_5.addActionListener(this);b_6=new JButton("6");b_6.setFont(new Font("微软雅黑",Font.PLAIN,14));b_6.setMargin(new Insets(0,0,0,0));b_6.setForeground(Color.blue);b_6.setMnemonic(KeyEvent.VK_6);b_6.addActionListener(this);b_cheng=new JButton("*");b_cheng.setFont(new Font("微软雅黑",Font.PLAIN,14)); b_cheng.setMargin(new Insets(0,0,0,0));b_cheng.setForeground(Color.red);b_cheng.addActionListener(this);b_daoshu=new JButton("1/x");b_daoshu.setFont(new Font("微软雅黑",Font.PLAIN,11)); b_daoshu.setMargin(new Insets(0,0,0,0));b_daoshu.setForeground(Color.blue);b_daoshu.addActionListener(this);b_1=new JButton("1");b_1.setFont(new Font("微软雅黑",Font.PLAIN,14));b_1.setMargin(new Insets(0,0,0,0));b_1.setForeground(Color.blue);b_1.setMnemonic(KeyEvent.VK_1);b_1.addActionListener(this);b_2=new JButton("2");b_2.setFont(new Font("微软雅黑",Font.PLAIN,14));b_2.setMargin(new Insets(0,0,0,0));b_2.setForeground(Color.blue);b_2.setMnemonic(KeyEvent.VK_2);b_2.addActionListener(this);b_3=new JButton("3");b_3.setFont(new Font("微软雅黑",Font.PLAIN,14));b_3.setMargin(new Insets(0,0,0,0));b_3.setForeground(Color.blue);b_3.setMnemonic(KeyEvent.VK_3);b_3.addActionListener(this);b_jian=new JButton("-");b_jian.setFont(new Font("微软雅黑",Font.PLAIN,14)); b_jian.setMargin(new Insets(0,0,0,0));b_jian.setForeground(Color.red);b_jian.addActionListener(this);b_0=new JButton("0");b_0.setFont(new Font("微软雅黑",Font.PLAIN,14));b_0.setMargin(new Insets(0,0,0,0));b_0.setPreferredSize(new Dimension(75,27));b_0.setForeground(Color.blue);b_0.setMnemonic(KeyEvent.VK_0);b_0.addActionListener(this);JLabel L1=new JLabel();L1.setPreferredSize(new Dimension(5,3));b_dian=new JButton(".");b_dian.setFont(new Font("微软雅黑",Font.BOLD,14)); b_dian.setMargin(new Insets(0,0,0,0));b_dian.setPreferredSize(new Dimension(35,27));b_dian.setForeground(Color.blue);b_dian.addActionListener(this);JLabel L2=new JLabel();L2.setPreferredSize(new Dimension(5,3));b_jia=new JButton("+");b_jia.setFont(new Font("微软雅黑",Font.BOLD,14));b_jia.setMargin(new Insets(0,0,0,0));b_jia.setPreferredSize(new Dimension(35,27));b_jia.setForeground(Color.red);b_jia.addActionListener(this);b_dengyu=new JButton("=");b_dengyu.setFont(new Font("微软雅黑",Font.BOLD,22)); b_dengyu.setMargin(new Insets(0,0,0,0));b_dengyu.setPreferredSize(new Dimension(35,60));b_dengyu.setForeground(Color.blue);b_dengyu.addActionListener(this);p1.add(b_mc);p1.add(b_mr);p1.add(b_ms);p1.add(b_mjia);p1.add(b_mjian);p1.add(b_tui);p1.add(b_ce);p1.add(b_c);p1.add(b_jj);p1.add(b_dui);p1.add(b_7);p1.add(b_8);p1.add(b_9);p1.add(b_chu);p1.add(b_baifenhao);p1.add(b_4);p1.add(b_5);p1.add(b_6);p1.add(b_cheng);p1.add(b_daoshu);p_button1.add(p1);p_button2=new JPanel();p_button2.setPreferredSize(new Dimension((frm.width-24),65)); p_button2.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));p_all.add(p_button2);p2=new JPanel();p2.setPreferredSize(new Dimension(156,65));p2.setLayout(new FlowLayout(FlowLayout.LEFT,0,1));p3=new JPanel();p3.setPreferredSize(new Dimension(39,62));p3.setLayout(new FlowLayout(FlowLayout.LEFT,4,0));p_button2.add(p2);p_button2.add(p3);p4=new JPanel();p4.setPreferredSize(new Dimension(156,27));p4.setLayout(new GridLayout(1,4,5,5));p5=new JPanel();p5.setPreferredSize(new Dimension(156,39));p5.setLayout(new FlowLayout(FlowLayout.LEFT,0,5)); p2.add(p4);p2.add(p5);p4.add(b_1);p4.add(b_2);p4.add(b_3);p4.add(b_jian);p5.add(b_0);p5.add(L1);p5.add(b_dian);p5.add(L2);p5.add(b_jia);p3.add(b_dengyu);//---------------------------------------快捷菜单对象-------------------------popupmenu=new JPopupMenu();//快捷菜单对象menuitem1_copy=new JMenuItem("复制");menuitem1_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent .CTRL_MASK));menuitem1_copy.addActionListener(this);//监视鼠标右击菜单”复制“popupmenu.add(menuitem1_copy);menuitem1_paste=new JMenuItem("粘贴");menuitem1_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEven t.CTRL_MASK));menuitem1_paste.addActionListener(this); //监视鼠标右击菜单”粘贴“popupmenu.add(menuitem1_paste);ta1.add(popupmenu);con.validate();validate();}//---------------------------------------功能区------------------------------------public void actionPerformed(ActionEvent e){if(e.getSource()==menuitem_about){JOptionPane.showMessageDialog(null,"这是一个模仿win7的计算器!欢迎改进,\n创作者:钟作明","仿win7计算器",RMATION_MESSAGE);}if(e.getSource()==menuitem1_copy){ta1.selectAll();ta1.copy();}else if(e.getSource()==menuitem1_paste){ta1.setEditable(true);ta1.setText("");ta1.paste();ta1.setEditable(false);}else if(e.getSource()==menuitem_copy){ta1.selectAll();ta1.copy();}else if(e.getSource()==menuitem_paste){ta1.setEditable(true);ta1.setText("");ta1.paste();ta1.setEditable(false);}else if(e.getSource()==menuitem_exit){System.exit(0);}else if(e.getSource()==b_ce){ta1.setEditable(true);ta1.setText("0");ta1.setEditable(false);}else if(e.getSource()==b_c){ta1.setEditable(true);ta1.setText("0");ta1.setEditable(false);}else if(e.getSource()==b_tui){String str=ta1.getText();StringBuffer s=new StringBuffer(str);int L=s.length();try{if(L!=1){s=s.deleteCharAt(L-1);}else{s=new StringBuffer("0");}}catch(Exception e1){}ta1.setText(String.valueOf(s));}//---------------------------------------------数字键-----------------------------if(e.getSource()==b_1){addString(1);}else if(e.getSource()==b_2){addString(2);}else if(e.getSource()==b_3){addString(3);}else if(e.getSource()==b_4){addString(4);}else if(e.getSource()==b_5){addString(5);}else if(e.getSource()==b_6){addString(6);}else if(e.getSource()==b_7){addString(7);}else if(e.getSource()==b_8){addString(8);}else if(e.getSource()==b_9){addString(9);}else if(e.getSource()==b_0){addString(0);}else if(e.getSource()==b_dian){StringBuffer s1=new StringBuffer(ta1.getText());StringBuffer dian=new StringBuffer(".");if(String.valueOf(s1).indexOf(".")==-1){s1.append(dian);}ta1.setText(String.valueOf(s1));。