这里找找??
http://sourceforge.net/

解决方案 »

  1.   

    这是我帮一个网友修改后的帖子!你试试吧,功能不太强!
    //file name:  JSQ2.javaimport java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class JSQ2 extends JFrame implements ActionListener
    {
    private String  name[] =
    {"0","1", "2","+","3","4","5","-","6","7","8","*","9",".","=","/"};
    private String  extend[] =
    {"x^2","ln","back","sin","cos","tan","√ ̄","off","cls"};
    String s="";
    int flag=0;
        double x;
    final double pi = 3.14159265358979323846;
    private JButton button[] = new JButton[name.length];
    private JButton button1[] = new JButton[extend.length];
    JLabel dis_show = new JLabel("结果:");
    JTextField window = new JTextField(12);
    public JSQ2()
    {
    super("woodfire小小计算机");
    setSize(200,290);
    Container c = getContentPane();
    c.setLayout(new GridLayout(2,1,0,0));
    JPanel result = new JPanel();
    result.add(dis_show);
    result.add(window);
    for(int i= 0;i<extend.length;i++)
    {
    button1[i] = new JButton(extend[i]);
                result.add(button1[i]);
    }
    JPanel border = new JPanel();
    for(int i= 0;i<name.length;i++)
    {
    button[i] = new JButton(name[i]);
                border.add(button[i]);
    }
    c.add(result);
    c.add(border);
    for(int i= 0;i<name.length;i++)
    {
               button[i].addActionListener(this);
    }
    for(int i= 0;i<extend.length;i++)
    {
              button1[i].addActionListener(this);
    }
    show();
    }
    public void actionPerformed(ActionEvent e)
    {
     if (e.getSource()==button[3])
        {
     x=Double.parseDouble(s);     flag=1;
        window.setText("");
        s="";
    }
    else if (e.getSource()==button[7])
    {
      x=Double.parseDouble(s);
              flag=2;
          window.setText("");
          s="";
    }
    else if (e.getSource()==button[11])
    {
      x=Double.parseDouble(s);
                      flag=3;
              window.setText("");
              s="";
    }
    else if (e.getSource()==button[15])
    {
      x=Double.parseDouble(s);
          flag=4;
          window.setText("");
          s="";
    }
    else if (e.getSource()==button[14])
    {
      switch(flag)
          {
        case 1:
            {
     x=x+Double.parseDouble(s);
     String s=String.valueOf(x);
         window.setText(s);
         break;
         }
           case 2:
            {
         x=x-Double.parseDouble(s);
         String s=String.valueOf(x);
         window.setText(s);
         break;
         }
          case 3:
            {
         x=x*Double.parseDouble(s);
         String s=Double.toString(x);
         window.setText(s);
         break;
       }
          case 4:
            {
          if(Double.parseDouble(s)==0)
            {
      window.setText("除数不能为0");
      break;
    }
            x=x/Double.parseDouble(s);
            String s=String.valueOf(x);
            window.setText(s);
            break;
        }
      }
    }
    else if(e.getSource()==button1[2])
    {
              StringBuffer str = new StringBuffer(window.getText());
      int n=str.length();
      int m=n-1;
      s = String.valueOf(str.delete(m,n));
      window.setText(s);
    }
    else if(e.getSource()==button1[8])
    {
              window.setText("");
          s="";
          flag=0;
    }
    else if(e.getSource()==button1[0])
    {
                 x=Double.parseDouble(s);
     x=x*x;
          String s=String.valueOf(x);
            window.setText(s);
    }
    else if(e.getSource()==button1[1])
    {
                 x=Math.log(Double.parseDouble(s));
            String s=String.valueOf(x);
            window.setText(s);
    }
    else if(e.getSource()==button1[3])
    {
                 x=Math.sin(Double.parseDouble(s)*pi/180);
            String s=String.valueOf(x);
            window.setText(s);
    }
    else if(e.getSource()==button1[6])
    {
                 x=Math.sqrt(Double.parseDouble(s));
            String s=String.valueOf(x);
            window.setText(s);
    }
    else if(e.getSource()==button1[4])
    {
                 x=Math.cos(Double.parseDouble(s)*pi/180);
            String s=String.valueOf(x);
            window.setText(s);
    }
    else if(e.getSource()==button1[5])
    {
                 x=Math.tan(Double.parseDouble(s)*pi/180);
            String s=String.valueOf(x);
            window.setText(s);
    }
    else if(e.getSource()==button1[7])
    {
                System.exit(0);
    }
          else
             {
               s=s+e.getActionCommand();
               window.setText(s);
      }
    }
    public static void main(String[] args)
    {
    JSQ2 bun = new JSQ2();
    bun.addWindowListener(new WindowAdapter()
    {
    public void windowListener(WindowEvent e)
    {
    System.exit(0);
    }
    });
    }
    }
      

  2.   

    //还有一个,分成两部分了,你拷贝到一起旧可以了!文件名:Calculator.javaimport java.awt.*;
    import java.awt.event.*;
    import java.util.List;
    import java.util.*;
    import java.lang.Math;
    class Calculator extends Frame implements ActionListener
    {
    Label lb;
       /**************************************   
      *   To define the Buttons 
      ************/
    Button bt[] = new Button[10];        
          Button equal;
        Button add ;
        Button subtract ;
        Button multiply ;
        Button divide ;
        Button plus_minus ;
        Button sqrt ;
        Button percent ;
        Button fraction ;
        Button decimal ;
        
       Button AC;
       Button MR;
       Button MS ;
       Button Mplus;    public static void main(String args[]) 
    {
       new Calculator();
    }public Calculator()
    {
     /*************************************  
        *   To define the Frame and divided
        *     it into 3 regions  
        ************/
       Frame f = new Frame("Calculator");
    f.setLocation(300,200);
    f.setResizable(false);BorderLayout bl = new BorderLayout(10,5);
    Panel center = new Panel(bl);
    center.setBackground(Color.gray);
    center.setLayout(bl);Panel panel = new Panel();
    panel.setBackground(Color.gray);/*********************************   
      *   To add listener to the Frame 
      *    make it to be able to close
      ************/
    f.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    dispose();
    System.exit(0);
    }
    });  
    /*********************************   
      *   To define the Main Keyboard 
      ************/ 
      
      /********************************************   
      *   To initialize the Buttons and register
      *    them to a certain object 
      ************/
       for (int i=0;i<10;i++)
       {
       bt[i]=new Button(""+i);
       }
        equal = new Button("=");
        add = new Button("+");
        subtract = new Button("-");
        multiply = new Button("*");
        divide = new Button("/");
        plus_minus =new Button("+/-");
        sqrt = new Button("sqrt");
        percent = new Button("%");
        fraction = new Button("1/x");
        decimal = new Button(".");
        
       AC = new Button("AC");
       MR = new Button("MR");
       MS = new Button("MS");
       Mplus = new Button("M+");
        
      /***************************************   
      *   disable some buttons  **
      ************        **/
       plus_minus.setEnabled(false); /**/
       percent.setEnabled(false); /**/
       fraction.setEnabled(false); /**/
       decimal.setEnabled(false); /**/
       MR.setEnabled(false); /**/
       MS.setEnabled(false); /**/
       Mplus.setEnabled(false); /**/
       sqrt.setEnabled(false); /**/
       add.setEnabled(false); /**/
       subtract.setEnabled(false); /**/
       multiply.setEnabled(false); /**/
       divide.setEnabled(false); /**/
       sqrt.setEnabled(false);          /**/
       /***************************************/
       
       for (int i=0;i<10;i++)
       {
       bt[i].addActionListener(this);
       }
       equal.addActionListener(this);
       add.addActionListener(this);
       subtract.addActionListener(this);
       multiply.addActionListener(this);
       divide.addActionListener(this);
       AC.addActionListener(this);
          
      /*************************************  
      *   To lay out the right Keyboard 
      ************/
      
      GridLayout gl_right = new GridLayout(4,4,5,5);
      Panel p_right = new Panel(gl_right);
      p_right.setLayout(gl_right);
      
       for (int i=7;i<10;i++)
       {
       p_right.add(bt[i]);
       }
       p_right.add(divide);
       p_right.add(sqrt);
       for (int i=4;i<7;i++)
       {
       p_right.add(bt[i]);
       }
       p_right.add(multiply);
       p_right.add(percent);
       for (int i=1;i<4;i++)
       {
       p_right.add(bt[i]);
       }
       p_right.add(subtract);
       p_right.add(fraction);
       p_right.add(bt[0]);
       p_right.add(plus_minus); 
       p_right.add(decimal);  
       p_right.add(add);  
       p_right.add(equal);
       
       /*********************************   
      *   To lay out the left Keyboard 
      ************/
       GridLayout gl_left = new GridLayout(4,1,5,5);
       Panel p_left = new Panel(gl_left);
       p_left.setLayout(gl_left);
       
       p_left.add(AC);
       p_left.add(MR);
       p_left.add(MS);
       p_left.add(Mplus);
       /*********************************   
      *   To define the Label and lay 
      *   it out on the top Keyboard 
      ************/
           lb = new Label("",Label.RIGHT);   
       lb.setBackground(Color.white);    
       /*********************************   
      *   To add the Main Keyboard 
      *     into the Frame
      ************/
       center.add(p_right,BorderLayout.CENTER);
       center.add(lb,BorderLayout.NORTH);
       center.add(p_left,BorderLayout.WEST);
       
       panel.add(center);f.add(panel);
       
        f.pack();
       f.setVisible(true);
       }  
       
          public void actionPerformed(ActionEvent e)
        {              
       Button button = (Button)e.getSource();
       String a = button.getLabel();
       char inputChar = a.charAt(0);  
       int inputInt = Character.digit(inputChar,10);
       if (inputInt != -1)    
       {
       add.setEnabled(true);
       subtract.setEnabled(true);
       multiply.setEnabled(true);
       divide.setEnabled(true);    
       Procedure.registerNumber.add(new Integer(inputInt));   
       }
       else    
       {
       if (inputChar != '=')
       {
       Procedure.registerNumber.add(new Integer(Integer.MAX_VALUE));
       String strInput = new String(button.getLabel());
       Procedure.registerSymbol.add(strInput);
       add.setEnabled(false);
       subtract.setEnabled(false);
       multiply.setEnabled(false);
       divide.setEnabled(false);
       }
       else 
       {
       add.setEnabled(false);
       subtract.setEnabled(false);
       multiply.setEnabled(false);
       divide.setEnabled(false);
       equal.setEnabled(false);
       for (int i=0;i<10;i++)
       {
       bt[i].setEnabled(false);
       }        
       Procedure.calculate();      
       lb.setText(Double.toString(Procedure.getResult()));
    }  
       }
      

  3.   

    switch(inputChar)
       {
       case '0' :  lb.setText(Procedure.dispaly());break;
            
       case '1' :lb.setText(Procedure.dispaly());break;
       
       case '2' :lb.setText(Procedure.dispaly());break;
       
       case '3' :lb.setText(Procedure.dispaly());break;
       
       case '4': lb.setText(Procedure.dispaly());break;
       
       case '5' : lb.setText(Procedure.dispaly());break;
       
       case '6' :lb.setText(Procedure.dispaly());break;
       
       case '7' :lb.setText(Procedure.dispaly());break;
       
       case '8' :lb.setText(Procedure.dispaly());break;
       
       case '9' :lb.setText(Procedure.dispaly());break;        
       
       case  '+' :lb.setText(Procedure.dispaly());break;
       
       case  '-' :lb.setText(Procedure.dispaly());break;
       
       case  '*' :lb.setText(Procedure.dispaly());break;
       
       case  '/' :lb.setText(Procedure.dispaly());break;
       
       case 'A' :  lb.setText("");
       Procedure.clear();
       equal.setEnabled(true);
       for (int i=0;i<10;i++)
       {
       bt[i].setEnabled(true);
       }            
           break;
            }            
       }        
    }
    class Procedure 
    {
       static List registerNumber = new LinkedList();
    static List registerSymbol = new LinkedList();
    private static double result;public static void clear()
    {
    registerNumber.clear();
    registerSymbol.clear();
    }public static String dispaly()
    {
    String str = new String();
    Iterator itNum = registerNumber.iterator();
    Iterator itSym = registerSymbol.iterator();while(itNum.hasNext())
    {
    Integer integer = (Integer)itNum.next();
    int i = integer.intValue();  
    if (i != Integer.MAX_VALUE)
    {
    str += Integer.toString(i);
    }
    else
    {
    str += itSym.next();
    }  
    }
    return(str);
    }public static void calculate()
    {
    int[] openPoint = {0,0};
    String subStr = new String();
    String strNum = new String();
    String strSym = new String();
    Iterator itNum = registerNumber.iterator();
    Iterator itSym = registerSymbol.iterator();
    double[][] element = new double[50][1]; 
    int num=0,countFrom=0,countEnd=0;while(itNum.hasNext())
    {    
    Integer integer = (Integer)itNum.next();
    int i = integer.intValue();  
    if (i != Integer.MAX_VALUE)
    {
    countEnd++;
    strNum += Integer.toString(i);
    }
    else
    {
    element[num++][0] = Integer.parseInt(strNum.substring(countFrom,countEnd));
    strSym += itSym.next();
    countFrom=countEnd;

    }
    strSym += "=";
       element[num][0] = Integer.parseInt(strNum.substring(countFrom,countEnd));
    /*******************************/
    // convert to Symbol Array
    /*****************************/
    char[] symbol = strSym.toCharArray(); int elementPoint = num+1;
    int symbolPoint = symbol.length-1;do
    {
    switch (symbol[0])
    {
    case '+' : if (symbol[1]=='*'|symbol[1]=='/')
    {
    if (symbol[1]=='*')
    {
    element[1][0]=element[1][0]*element[2][0];
    for (int j=2;j<elementPoint;j++)
    {
    element[j][0]=element[j+1][0];
    }
    elementPoint--;
    for (int j=1;j<symbolPoint;j++)
    {
    symbol[j]=symbol[j+1];
    }
    symbolPoint--;
    }
    else 
    {
    element[1][0]=element[1][0]/element[2][0];
    for (int j=2;j<elementPoint;j++)
    {
    element[j][0]=element[j+1][0];
    }
    elementPoint--;
    for (int j=1;j<symbolPoint;j++)
    {
    symbol[j]=symbol[j+1];
    }
    symbolPoint--;
    }
    }
    else 
    {
    element[0][0]=element[0][0]+element[1][0];
    if (symbol[1] != '=')
    {
    for (int j=1;j<elementPoint;j++)
    {
    element[j][0]=element[j+1][0];
    }
    elementPoint--;
    }
    for (int j=0;j<symbolPoint;j++)
    {
    symbol[j]=symbol[j+1];
    }
    symbolPoint--;
    }
    break;case '-' :  if (symbol[1]=='*'|symbol[1]=='/')
    {
    if (symbol[1]=='*')
    {
    element[1][0]=element[1][0]*element[2][0];
    for (int j=2;j<elementPoint;j++)
    {
    element[j][0]=element[j+1][0];
    }
    elementPoint--;
    for (int j=1;j<symbolPoint;j++)
    {
    symbol[j]=symbol[j+1];
    }
    symbolPoint--;
    }
    else 
    {
    element[1][0]=element[1][0]/element[2][0];
    for (int j=2;j<elementPoint;j++)
    {
    element[j][0]=element[j+1][0];
    }
    elementPoint--;
    for (int j=1;j<symbolPoint;j++)
    {
    symbol[j]=symbol[j+1];
    }
    symbolPoint--;}
    }
    else 
    {
    element[0][0]=element[0][0]-element[1][0];
    if (symbol[1] != '=')
    {
    for (int j=1;j<elementPoint;j++)
    {
    element[j][0]=element[j+1][0];
    }
    elementPoint--;
    }
    for (int j=0;j<symbolPoint;j++)
    {
    symbol[j]=symbol[j+1];
    }
    symbolPoint--;
    }
    break;case '*' :  element[0][0]=element[0][0]*element[1][0];
    if (symbol[1] != '=')
    {
    for (int j=1;j<elementPoint;j++)
    {
    element[j][0]=element[j+1][0];
    }
    elementPoint--;
    }
    for (int j=0;j<symbolPoint;j++)
    {
    symbol[j]=symbol[j+1];
    }
    symbolPoint--;
    break;case '/' :  element[0][0]=element[0][0]/element[1][0];
    if (symbol[1] != '=')
    {
    for (int j=1;j<elementPoint;j++)
    {
    element[j][0]=element[j+1][0];
    }
    elementPoint--;
    }
    for (int j=0;j<symbolPoint;j++)
    {
    symbol[j]=symbol[j+1];
    }
    symbolPoint--;
    break;
    }
    }while(symbol[0]!='=');
    result = element[0][0];
    }public static double getResult()
    {
    return(result);
    }
    }
      

  4.   

    使用布局管理器,JButton数组和监听器设计,很简单