哪位好人能发我一个JAVA计算器程序,只要有十进制转换成二进制的运算就行,要图形界面的~

解决方案 »

  1.   

    留下E-mail给我,记得给我加分
      

  2.   

    这个是模拟计算机用java实现的,但是太长了.我就分着发啊:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.lang.*;/*
     *项目名:科学计算器
     *时间:09/01/15
     *编辑者:吴庆和高翔
     */public class Calculatort extends JFrame {
    JFrame conFrame=new JFrame();
    //菜单栏
    MenuBar bar;
    Menu fileMenu,editMenu,viewMenu;
    MenuItem copyItem,zhanItem,tuiItem;
    //面板和单行文本
    JTextField conField;
    JPanel jpanel1,jpanel3;
    JScrollPane scrollHelp;
    JTextArea help;
    JFileChooser jf5;
    //按钮
    JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9;
    JButton jbcot,jbsin,jbcos,jbtan;
    JButton jbMc,jbMr,jbM,JB,Jfu,JCE,jbms;
    JButton jbchu,jbdeng,jbdot,jbcheng,jbjian,jbjia,jbsq,jbbai,jbdao;

    String str1="0";  //运算数1  初值一定为0  为了程序的安全
      String str2="0";  //运算数2
      String fh="+"; //运算符
      String jg="0.";//结果
      String mid=".";
        boolean pit=true;
     
    //状态开关  重要
      int k1=1;//开关1 用于选择输入方向  将要写入str2或 str2
      int k2=1;//开关2 符号键 次数  k2>1说明进行的是2+3-9+8 这样的多符号运算
      int k3=1;//开关3 str1  是否可以被清0  ==1时可以  !=1时不能被清0
      int k4=1;//开关4 str2  同上
      int k5=1;//开关5  控制小数点可否被录入  ==1时可以  !=1 输入的小数点被丢掉
      JButton jicunqi; //寄存器  记录 是否连续按下符号键
      Vector vt=new Vector(20,10);

    //控制窗体在中央
    Dimension fSize=new Dimension(410,280);  
    Dimension wSize=Toolkit.getDefaultToolkit().getScreenSize();
    Point point=new Point(wSize.width/2-fSize.width/2,wSize.height/2-fSize.height/2);

    //主面板
    Panel mainPane=new Panel(new BorderLayout());
    //构造函数
    public Calculatort(String s){
    super(s);
    JB=new JButton("back");
    JB.setForeground(new Color(0, 0, 255));
    JCE=new JButton("C");
    Jfu=new JButton("+/-");
    jbsq=new JButton("√");
    jbbai=new JButton("%");
    jbdao=new JButton("1/x");

      jbMc=new JButton("MC");
      jbsin=new JButton("sin");
      jb7=new JButton("7");
      jb8=new JButton("8");
      jb9=new JButton("9");
      jbjia=new JButton("+");
     
      jbMr=new JButton("MR");
      jbcos=new JButton("cos");
      jb4=new JButton("4");
      jb5=new JButton("5");
      jb6=new JButton("6");
      jbjian=new JButton("-");
     
     
      jbms=new JButton("MS");
      jbtan=new JButton("tan");
      jb1=new JButton("1");
      jb2=new JButton("2");
      jb3=new JButton("3");
      jbcheng=new JButton("*");
     
      jbM=new JButton("M+");
      jbcot=new JButton("cot");
      jb0=new JButton("0");
      jbdot=new JButton(".");
      jbdeng=new JButton("=");
      jbchu=new JButton("/");
    add(mainPane);
    setSize(fSize);
    setResizable(false);
    setLocation(point);
    CreateMenu();
    Grid();
      

  3.   

    addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent ar){
    try{
    int v=JOptionPane.showConfirmDialog(null,"是否退出!");
    if(v==JOptionPane.YES_OPTION){
    dispose();
    }else if(v==JOptionPane.NO_OPTION){

    }
    }catch(Exception ex){
    ex.printStackTrace();
    }
    }
    });
    this.setVisible(true);
    }

    //菜单栏
    private void CreateMenu(){
    MenuBar bar=new MenuBar();
    setMenuBar(bar);

    Menu fileMenu=new Menu("编辑(E)");
    Menu editMenu=new Menu("查看(V)");
    Menu viewMenu=new Menu("帮助(H)");
    bar.add(fileMenu);
    bar.add(editMenu);
    bar.add(viewMenu);

    MenuItem copyItem=new MenuItem("复制(C) Ctrl+C");
    copyItem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                  conField.copy();
            }});
    MenuItem zhanItem=new MenuItem("粘贴(V) Ctrl+V");
      zhanItem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                  conField.paste();
            }});
    MenuItem tuiItem=new MenuItem("退出");
    tuiItem.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                System.exit(0);
            }});
    fileMenu.add(copyItem);
    fileMenu.add(zhanItem);
    fileMenu.add(tuiItem);

    MenuItem bItem=new MenuItem("标准型(T)");
    bItem.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
                 int type=JOptionPane.INFORMATION_MESSAGE;
                 String message="当前就是标准型";;
                 JOptionPane.showMessageDialog(conFrame,message,null,type);
             }});
    MenuItem kItem=new MenuItem("科学型(S)");
    kItem.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
                 int type=JOptionPane.INFORMATION_MESSAGE;
                 String title="科学型";
                 String message= "当前是标准型计算器,\n科学型计算器有待更新。";
                 JOptionPane.showMessageDialog(conFrame,message,title,type);
             }});
    MenuItem sItem=new MenuItem("数字分组(I)");
    editMenu.add(bItem);
    editMenu.add(kItem);
    editMenu.add(sItem);

    MenuItem hItem=new MenuItem("帮助主题(H)");
    hItem.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
    help = new JTextArea(5, 20);
    int type=JOptionPane.INFORMATION_MESSAGE;
    scrollHelp = new JScrollPane(help);
    help.setEditable(false);
    String title="用户须知";
         help.append("执行简单计算\n");
         help.append("1.键入计算的第一个数字。\n");
         help.append("2.单击(+)执行加,(-)执行减,(*)执行乘,(/)执行除等等用法。\n");
         help.append("3.键入计算的下一个数字。\n");
         help.append("4.输入所有剩余的运算符和数字。\n");
         help.append("5.单击(=)。\n");
         JOptionPane.showMessageDialog(conFrame,scrollHelp,title,type);
         }});
    MenuItem aItem=new MenuItem("关于计算器(A)");
    aItem.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
                 int type=JOptionPane.INFORMATION_MESSAGE;
                 String title="About";
                 String message= "计算器2.11版\n开发者:MIPO";
                 JOptionPane.showMessageDialog(conFrame,message,title,type);
             }});
    viewMenu.add(hItem);
    viewMenu.add(aItem);
    }
      

  4.   

    public void Grid(){
    //单行文本
    jpanel1=new JPanel();
    conField=new JTextField("0.",36);
    conField.setEditable(true); 
    jpanel1.add(conField);
    conField.requestFocus();//
    conField.setBackground(new Color(255, 255, 255));
    mainPane.add(jpanel1,BorderLayout.NORTH);
    conField.setHorizontalAlignment(JTextField.RIGHT);
    conField.setEnabled(true);
     
     //jpanel3面板
      jpanel3 = new JPanel();
    jpanel3.setBounds(0,0,300,100);
       jpanel3.setLayout(new GridLayout(5,6,5,5));
      mainPane.add(jpanel3,BorderLayout.CENTER);
    jb0.setMnemonic(KeyEvent.VK_0);//等效键
     
      jpanel3.add(JB);
    jpanel3.add(JCE);
    jpanel3.add(Jfu);
    jpanel3.add(jbsq);
    jpanel3.add(jbbai);
    jpanel3.add(jbdao);

      jpanel3.add(jbMc);
      jpanel3.add(jbsin);
      jpanel3.add(jb7);
      jpanel3.add(jb8);
      jpanel3.add(jb9);
      jpanel3.add(jbjia);
     
      jpanel3.add(jbMr);
      jpanel3.add(jbcos);
      jpanel3.add(jb4);
      jpanel3.add(jb5);
      jpanel3.add(jb6);
      jpanel3.add(jbjian);
     
      jpanel3.add(jbms);
      jpanel3.add(jbtan);
      jpanel3.add(jb1);
      jpanel3.add(jb2);
      jpanel3.add(jb3);
      jpanel3.add(jbcheng);
     
      jpanel3.add(jbM);
      jpanel3.add(jbcot);
      jpanel3.add(jb0);
      jpanel3.add(jbdot);
      jpanel3.add(jbdeng);
      jpanel3.add(jbchu);
     
     
     //数 字 键
    class JianTing implements ActionListener{
        public void actionPerformed(ActionEvent e){
         String ss=((JButton)e.getSource()).getText();
         jicunqi=(JButton)e.getSource(); 
         vt.add(jicunqi);    
         if (k1==1){//开关 k1  为1时,向数1写  为2时,向数2写
          if(k3==1){//str1  是否可以被清0  ==1时可以  !=1时不能被清0
          str1="";
          k5=1;//还原开关k5状态      
          }
          str1=str1+ss;
          k3=k3+1;//str1  是否可以被清0  ==1时可以  !=1时不能被清0   
          conField.setText(str1);//显示    
         }else if(k1==2){//开关 k1  为1时,向数1写  为2时,向数2写
          if (k4==1){//开关4 符号键 次数  k4>1说明进行的是2+3-9+8 这样的多符号运算
           str2="";
           k5=1; //还原开关k5状态      
          }
          str2=str2+ss;
          k4=k4+1;//开关4 符号键 次数  k4>1说明进行的是2+3-9+8 这样的多符号运算
          conField.setText(str2);
           } 
        }
    }   //符 号
    class JianTing_fh implements ActionListener{
        public void actionPerformed(ActionEvent e){
         String ss2=((JButton)e.getSource()).getText();
         jicunqi=(JButton)e.getSource();
         vt.add(jicunqi);
        
         if(k2==1){//开关1 用于选择输入方向  将要写入str2或 str2
          k1=2;//开关 k1  为1时,向数1写  为2时,向数2写 
         k5=1;//开关5  控制小数点可否被录入  ==1时可以  !=1 输入的小数点被丢掉
          fh=ss2;
          k2=k2+1;//按符号键的次数
         }else{
          int a=vt.size();
          JButton c=(JButton)vt.get(a-2);
          if(!(c.getText().equals("+"))&&!(c.getText().equals("-"))&&!(c.getText().equals("*"))&&!(c.getText().equals("/"))&&!(c.getText().equals("%"))){ 
         yuns();
           str1=jg;
        k1=2;//开关 k1  为1时,向数1写  为2时,向数2写 
        k5=1;//开关5  控制小数点可否被录入  ==1时可以  !=1 输入的小数点被丢掉
        k4=1;//开关4 符号键 次数  k4>1说明进行的是2+3-9+8 这样的多符号运算
        fh=ss2;//运算符
          }
           k2=k2+1; //按符号键的次数  
         }     
        }
    }
      //等  于
    class JianTing_dy implements ActionListener{
       public void actionPerformed(ActionEvent e){
         jicunqi=(JButton)e.getSource();
          vt.add(jicunqi);
          yuns();
         k1=1; //还原开关k1状态(//开关1 用于选择输入方向  将要写入str2或 str2)
         k2=1;//开关2 符号键 次数  k2>1说明进行的是2+3-9+8 这样的多符号运算
         k3=1;//还原开关k3状态( str1  是否可以被清0  ==1时可以  !=1时不能被清0)
         k4=1; //还原开关k4状态(开关4 符号键 次数  k4>1说明进行的是2+3-9+8 这样的多符号运算)
         str1=jg; //为7+5=12 +5=17 这种计算做准备
       }
    }
      //清除
    class JianTing_clear implements ActionListener{
        public void actionPerformed(ActionEvent e){
         jicunqi=(JButton)e.getSource();
        vt.add(jicunqi);
        k5=1;//开关5  控制小数点可否被录入  ==1时可以  !=1 输入的小数点被丢掉
        k2=1;//开关2 符号键 次数  k2>1说明进行的是2+3-9+8 这样的多符号运算
        k1=1;//开关1 用于选择输入方向  将要写入str2或 str2
        k3=1;//str1  是否可以被清0  ==1时可以  !=1时不能被清0
        k4=1;//开关4 符号键 次数  k4>1说明进行的是2+3-9+8 这样的多符号运算
        str1="0"; //运算数1  初值一定为0  为了程序的安全
        str2="0";//运算数2
        fh="";//运算符
        jg="";//结果
        vt.clear();
        conField.setText("0.");     
       }
    }
      

  5.   

    http://www.5fuyou.com/images/head/DownLoad.html 分享一个编程视频下载地址,很好,很强大