参考一下
import java.awt.*;
import java.awt.event.*;public class Eee{          //Java Application的主类
public static void main(String[] args) {
MainFrame MyFrame = new MainFrame();  
        MyFrame.setSize(400,300);
MyFrame.setLocation(200,150);
}
}class MainFrame extends Frame implements ActionListener{
Label result;
Button button;

MainFrame(){
super("Eee.1.0");
this.setLayout(new FlowLayout());
addWindowListener(new closeWin());//窗口事件注册,使closeWin监听处理窗口事?
button=new Button("按钮");
button.addActionListener(this);
result=new Label("                           ");
add(result);add(button);
    show();
}

public void actionPerformed (ActionEvent e){
String str=e.getActionCommand();
        result.setText(str);
      if (str.equals("C"))      //这两句
    result.setText(str);      //不要也罢
  }}class closeWin extends WindowAdapter{            //创建窗口剪裁类的子类,处理窗口关闭事件
public void windowClosing(WindowEvent e){
Frame frm=(Frame)(e.getSource());
frm.dispose();
System.exit(0);
}
}

解决方案 »

  1.   

    我就是因为有几个按钮,要区别是按的哪个呀,当然不要if(str.equals("c"))那两句,它就不会出错了。
      

  2.   

    加上if (str.equals("C"));result.setText(str);   也不会报错啊
      

  3.   

    你可以这样判断不同的按钮:
    Button button1,button2,button3;
    button1=new Button("按钮1");
    button1=new Button("按钮2");
    button1=new Button("按钮3");
    ......................
    public void actionPerformed (ActionEvent e){
            if(e.getActionCommand=="按钮1")
             ..........
            else if  (e.getActionCommand=="按钮2")
             ..........
            else if(e.getActionCommand=="按钮3")
             ..........
    }
      

  4.   

    其错误信息如下:
    java.lang.NumberFormatException: For input string: "C"
            at java.lang.NumberFormatException.forInputString(NumberFormatException.
    java:48)
            at java.lang.Integer.parseInt(Integer.java:426)
            at java.lang.Integer.valueOf(Integer.java:532)
            at AwtCalc.actionPerformed(AwtCalc.java:117)
            at java.awt.Button.processActionEvent(Button.java:381)
            at java.awt.Button.processEvent(Button.java:350)
            at java.awt.Component.dispatchEventImpl(Component.java:3598)
            at java.awt.Component.dispatchEvent(Component.java:3439)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
            at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
    read.java:197)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
    ad.java:150)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)        at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
      

  5.   

    import java.awt.*;
    import java.awt.event.*;
    import java.awt.Graphics;public class AwtCalc extends Frame implements ActionListener
    {  private  Button[] buttons=new Button[20];
      private String[] buttonText={"1","2","3","+","-","4","5","6","*",
                   "/","7","8","9","^","sqrt","C","0",".","%","="};
      private EtextField result; //结果显示框
      private Label label;
      private Color forecolor,backcolor,fieldcolor;
      private Font font ,buttonfont;
      int operation,LastButtonType;
      int OnScreen,OutOfScreen; public AwtCalc(){
    super("计算器");
    setBackground(Color.lightGray);
    setSize(270,200);

        
        font=new Font("Courier",font.ITALIC,12);
        buttonfont=new Font("Courier",font.PLAIN,12);
         
         result=new EtextField(125,18);
         label=new Label ("The Result");
         setLayout(new FlowLayout());
         //初始化按钮
         Panel mainpanel=new Panel();
         mainpanel.setLayout(new GridLayout(5,1));
         for( int i=0;i<20;i++)
         {
          buttons[i]=new Button (buttonText[i]);
            buttons[i].setFont(buttonfont);
            buttons[i].addActionListener(this);
         }
         Panel panel1=new Panel();
         panel1.add(result);
         panel1.add(label);
         mainpanel.add(panel1);
         
         Panel panel2=new Panel();
          panel2.setLayout(new GridLayout(1,5,5,5));
          panel2.add(buttons[0]);
          panel2.add(buttons[1]);
          panel2.add(buttons[2]);
          panel2.add(new Label(" "));
          panel2.add(buttons[3]);
          panel2.add(buttons[4]);
          mainpanel.add(panel2);
          
          Panel panel3=new Panel();
          panel3.setLayout(new GridLayout(1,5,5,5));
          panel3.add(buttons[5]);
          panel3.add(buttons[6]);
          panel3.add(buttons[7]);
          panel3.add(new Label(" "));
          panel3.add(buttons[8]);
          panel3.add(buttons[9]);
          mainpanel.add(panel3);
          
          Panel panel4=new Panel();
          panel4.setLayout(new GridLayout(1,5,5,5));
          panel4.add(buttons[10]);
          panel4.add(buttons[11]);
          panel4.add(buttons[12]);
          panel4.add(new Label(" "));
          panel4.add(buttons[13]);
          panel4.add(buttons[14]);
          mainpanel.add(panel4);
          
          Panel panel5=new Panel();
          panel5.setLayout(new GridLayout(1,5,5,5));
         // panel5.setLayout(new FlowLayout(FlowLayout.CENTER,2,2));
          // panel5.reshape(100,55,160,130);
          panel5.add(buttons[15]);
          panel5.add(buttons[16]);
          panel5.add(buttons[17]);
          panel5.add(new Label(" "));
          panel5.add(buttons[18]); 
          panel5.add(buttons[19]);
          mainpanel.add(panel5);
          
          add("Center",mainpanel);
          
          buttons[15].setForeground(Color.red);
          result.setBackground(Color.white);
          show(); 
          addWindowListener(new WindowAdapter(){
           public void windowClosing(WindowEvent e){
           System.exit(0);
           }
          });
    }
      public void actionPerformed (ActionEvent e){
      
        String str=e.getActionCommand();
           if (str.equals("C"))
               // result.setText(str); 
            resetCalc();
          if (str.equals("+"))
            setoperation(1);
               if (str.equals("-"))
                setoperation(2);
               if (str.equals("*"))
                setoperation(3);
               if(str.equals("/"))
               setoperation(4);
               if(str.equals("="))
                doOperation();
              else {
               if(LastButtonType==0)
               OnScreen=OnScreen*10+Integer.valueOf(str).intValue();
               else
                      OnScreen= Integer.valueOf(str).intValue();
              }
             result.setText(String.valueOf(OnScreen));
             
             }            
          
          
         public void resetCalc(){
       LastButtonType=0;
       OnScreen=0;
       operation=0;
       OutOfScreen=0;
       }
      
        public void setoperation(int op)
         {
         operation=op;
         LastButtonType=op;
         OutOfScreen=OnScreen;
         }
      
        public  void doOperation()
         { 
            int temp=0;
             switch (operation)
             {
              case 1:
                temp=OnScreen+OutOfScreen;
                break;
               case 2:
                 temp=OnScreen-OutOfScreen;
                break;
               case 3:
                 temp=OnScreen*OutOfScreen;
                 break;
                case 4:
                 temp=OnScreen/OutOfScreen;
                 break;
               }
              OutOfScreen=OnScreen;
              OnScreen=temp;
              }
                        
        public void paint(Graphics g)
       {
        g.drawRect(0,0,getSize().width-1,getSize().height-1);
        g.drawLine(0,0,0,getSize().height);
        }
       
       public static void main(String[] args){
        AwtCalc ca=new AwtCalc();
       
       }
      }
       不好意思, 代码有点多
    下面是一个显示结果的类:
    import java.awt.*;public class EtextField extends Canvas{
    String message="0";
    int x;
    boolean firstTime=true;
    public EtextField (int width,int height){
    setSize(width,height);
    }
        public void setText(String text)
        {
         firstTime=false;
         message=text;
         x+=3;
         repaint();
         }
        public void paint(Graphics g){
         g.drawRect(0,0,getSize().width-1,getSize().height-1);
         g.drawString(message,3,13);
         }
        }   
      

  6.   

    修改如下:
    public void actionPerformed (ActionEvent e){
          String str=e.getActionCommand();
          if (str.equals("C"))
            resetCalc();
          else if (str.equals("+"))
            setoperation(1);
          else if (str.equals("-"))
            setoperation(2);
          else if (str.equals("*"))
            setoperation(3);
          else if(str.equals("/"))
            setoperation(4);
          else if(str.equals("="))
            doOperation();
          else{
               if(LastButtonType==0)
               OnScreen=OnScreen*10+Integer.valueOf(str).intValue();
               else
                      OnScreen= Integer.valueOf(str).intValue();
              }
             result.setText(String.valueOf(OnScreen));
    }     
    原因嘛,自己想一下!
      

  7.   

    原来程序试图把+,-,%等转为int型当然出错啦