//计算器,Eclipse中编译通过import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class testZ extends JFrame implements ActionListener {
private JPanel jPanel1,jPanel2;
private JTextField resultField;
private JButton s1,s2,s3,s4,s5,s6,s7,s8,s9,s0,
b1,b2,b3,b4,
f1,f2;
private boolean end,add,sub,mul,div;
private String str;
private double num1,num2;
  
//构造方法
    public testZ() {
     super("计算器");
     setSize(200,200);
     setLocation(500, 250);
     Container con=getContentPane();
     con.setLayout(new BorderLayout());
     jPanel1=new JPanel();
     jPanel1.setLayout(new GridLayout(1,1));
     jPanel2=new JPanel();
     jPanel2.setLayout(new GridLayout(4,4));
     resultField=new JTextField("0");
     jPanel1.add(resultField);
     con.add(jPanel1,BorderLayout.NORTH);
     s1=new JButton("1");  s1.addActionListener(this);
     s2=new JButton("2");  s2.addActionListener(this);
     s3=new JButton("3");  s3.addActionListener(this);   
     s4=new JButton("4");  s4.addActionListener(this);
     s5=new JButton("5");  s5.addActionListener(this);
    s6=new JButton("6");  s6.addActionListener(this);
    s7=new JButton("7");  s7.addActionListener(this);
    s8=new JButton("8");  s8.addActionListener(this);
    s9=new JButton("9");  s9.addActionListener(this);
    s0=new JButton("0");  s0.addActionListener(this);
    b1=new JButton("+");  b1.addActionListener(this);
    b2=new JButton("-");  b2.addActionListener(this);
    b3=new JButton("*");  b3.addActionListener(this);
    b4=new JButton("/");  b4.addActionListener(this);
    f1=new JButton(".");  f1.addActionListener(this);
    f2=new JButton("=");  f2.addActionListener(this);
    jPanel2.add(s1);
    jPanel2.add(s2);
    jPanel2.add(s3);
    jPanel2.add(b1);
    jPanel2.add(s4);
    jPanel2.add(s5);
    jPanel2.add(s6);
    jPanel2.add(b2);
    jPanel2.add(s7);
    jPanel2.add(s8);
    jPanel2.add(s9);
    jPanel2.add(b3);
    jPanel2.add(s0);  
    jPanel2.add(f1);
    jPanel2.add(f2);
    jPanel2.add(b4);
    con.add(jPanel2,BorderLayout.CENTER); 
}
     
    //num method 
    public void num(int i) {
     String s = null;
     s=String.valueOf(i);
     if(end) {
     //如果数字输入结束,则将文本框置零,重新输入
     resultField.setText("0");
     end=false;
     }
     if((resultField.getText()).equals("0")) {
     //如果文本框的内容为零,则覆盖文本框的内容
     resultField.setText(s);
     } else {
     //如果文本框的内容不为零,则在内容后面添加数字
     str = resultField.getText() + s;
     resultField.setText(str);
     }
    }
 
    //sign method 
    public void sign(int s) {
     if(s==1) {
     add=true;
    sub=false;
    mul=false;
    div=false;
     } else if(s==2) {
     add=false;
     sub=true;
     mul=false;
     div=false;
     } else if(s==3) {
     add=false;
     sub=false;
     mul=true;
     div=false;
     } else if(s==4) {
     add=false;
     sub=false;
     mul=false;
     div=true;
     } 
     num1=Double.parseDouble(resultField.getText());
     end=true;
    }  
    
    public void actionPerformed(ActionEvent e) { 
     //数字事件
     if(e.getSource()==s1) {
     num(1);
     }
     else if(e.getSource()==s2) num(2);
     else if(e.getSource()==s3) num(3);
     else if(e.getSource()==s4) num(4);
     else if(e.getSource()==s5) num(5);
     else if(e.getSource()==s6) num(6);
     else if(e.getSource()==s7) num(7);
     else if(e.getSource()==s8) num(8);
     else if(e.getSource()==s9) num(9);
     else if(e.getSource()==s0) num(0); 
    
     //符号事件  
     else if(e.getSource()==b1) sign(1);
     else if(e.getSource()==b2) sign(2);
     else if(e.getSource()==b3) sign(3);
     else if(e.getSource()==b4) sign(4);
    
     //等号
     else if(e.getSource()==f1) {
     str=resultField.getText();
     if(str.indexOf(".")<=1) {
     str+=".";
     resultField.setText(str);
     }
     }
     else if(e.getSource()==f2) {
     num2=Double.parseDouble(resultField.getText());
     if(add) {
     num1=num1 + num2;
     } else if(sub) {
     num1=num1 - num2;
     } else if(mul) {
     num1=num1 * num2;
     } else if(div) {
     num1=num1 / num2;
     } 
     resultField.setText(String.valueOf(num1));
     end=true;   
     }   
    }
    
    public static void main(String[] args) {
     testZ th1=new testZ();
     th1.setVisible(true);
    }
    
}

解决方案 »

  1.   


    //计算器,已经编译通过import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class testZ extends JFrame implements ActionListener {
    private JPanel jPanel1,jPanel2;
    private JTextField resultField;
    private JButton s1,s2,s3,s4,s5,s6,s7,s8,s9,s0,
    b1,b2,b3,b4,
    f1,f2;
    private boolean end,add,sub,mul,div;
    private String str;
    private double num1,num2;
      
    //构造方法
        public testZ() {
         super("计算器");
         setSize(200,200);
         setLocation(500, 250);
         Container con=getContentPane();
         con.setLayout(new BorderLayout());
         jPanel1=new JPanel();
         jPanel1.setLayout(new GridLayout(1,1));
         jPanel2=new JPanel();
         jPanel2.setLayout(new GridLayout(4,4));
         resultField=new JTextField("0");
         jPanel1.add(resultField);
         con.add(jPanel1,BorderLayout.NORTH);
         s1=new JButton("1");  s1.addActionListener(this);
         s2=new JButton("2");  s2.addActionListener(this);
         s3=new JButton("3");  s3.addActionListener(this);   
         s4=new JButton("4");  s4.addActionListener(this);
         s5=new JButton("5");  s5.addActionListener(this);
        s6=new JButton("6");  s6.addActionListener(this);
        s7=new JButton("7");  s7.addActionListener(this);
        s8=new JButton("8");  s8.addActionListener(this);
        s9=new JButton("9");  s9.addActionListener(this);
        s0=new JButton("0");  s0.addActionListener(this);
        b1=new JButton("+");  b1.addActionListener(this);
        b2=new JButton("-");  b2.addActionListener(this);
        b3=new JButton("*");  b3.addActionListener(this);
        b4=new JButton("/");  b4.addActionListener(this);
        f1=new JButton(".");  f1.addActionListener(this);
        f2=new JButton("=");  f2.addActionListener(this);
        jPanel2.add(s1);
        jPanel2.add(s2);
        jPanel2.add(s3);
        jPanel2.add(b1);
        jPanel2.add(s4);
        jPanel2.add(s5);
        jPanel2.add(s6);
        jPanel2.add(b2);
        jPanel2.add(s7);
        jPanel2.add(s8);
        jPanel2.add(s9);
        jPanel2.add(b3);
        jPanel2.add(s0);  
        jPanel2.add(f1);
        jPanel2.add(f2);
        jPanel2.add(b4);
        con.add(jPanel2,BorderLayout.CENTER); 
    }
         
        //num method 
        public void num(int i) {
         String s = null;
         s=String.valueOf(i);
         if(end) {
         //如果数字输入结束,则将文本框置零,重新输入
         resultField.setText("0");
         end=false;
         }
         if((resultField.getText()).equals("0")) {
         //如果文本框的内容为零,则覆盖文本框的内容
         resultField.setText(s);
         } else {
         //如果文本框的内容不为零,则在内容后面添加数字
         str = resultField.getText() + s;
         resultField.setText(str);
         }
        }
     
        //sign method 
        public void sign(int s) {
         if(s==1) {
         add=true;
        sub=false;
        mul=false;
        div=false;
         } else if(s==2) {
         add=false;
         sub=true;
         mul=false;
         div=false;
         } else if(s==3) {
         add=false;
         sub=false;
         mul=true;
         div=false;
         } else if(s==4) {
         add=false;
         sub=false;
         mul=false;
         div=true;
         } 
         num1=Double.parseDouble(resultField.getText());
         end=true;
        }  
        
        public void actionPerformed(ActionEvent e) { 
         //数字事件
         if(e.getSource()==s1) {
         num(1);
         }
         else if(e.getSource()==s2) num(2);
         else if(e.getSource()==s3) num(3);
         else if(e.getSource()==s4) num(4);
         else if(e.getSource()==s5) num(5);
         else if(e.getSource()==s6) num(6);
         else if(e.getSource()==s7) num(7);
         else if(e.getSource()==s8) num(8);
         else if(e.getSource()==s9) num(9);
         else if(e.getSource()==s0) num(0); 
        
         //符号事件  
         else if(e.getSource()==b1) sign(1);
         else if(e.getSource()==b2) sign(2);
         else if(e.getSource()==b3) sign(3);
         else if(e.getSource()==b4) sign(4);
        
         //等号
         else if(e.getSource()==f1) {
         str=resultField.getText();
         if(str.indexOf(".")<=1) {
         str+=".";
         resultField.setText(str);
         }
         }
         else if(e.getSource()==f2) {
         num2=Double.parseDouble(resultField.getText());
         if(add) {
         num1=num1 + num2;
         } else if(sub) {
         num1=num1 - num2;
         } else if(mul) {
         num1=num1 * num2;
         } else if(div) {
         num1=num1 / num2;
         } 
         resultField.setText(String.valueOf(num1));
         end=true;   
         }   
        }
        
        public static void main(String[] args) {
         testZ th1=new testZ();
         th1.setVisible(true);
        }
        
    }
      

  2.   

    这个很简单啊
    s1=new JButton("1");  s1.addActionListener(this);
        s2=new JButton("2");  s2.addActionListener(this);
        s3=new JButton("3");  s3.addActionListener(this); 
        s4=new JButton("4");  s4.addActionListener(this);
        s5=new JButton("5");  s5.addActionListener(this);
      s6=new JButton("6");  s6.addActionListener(this);
      s7=new JButton("7");  s7.addActionListener(this);
      s8=new JButton("8");  s8.addActionListener(this);
      s9=new JButton("9");  s9.addActionListener(this);
      s0=new JButton("0");  s0.addActionListener(this);
      b1=new JButton("+");  b1.addActionListener(this);
      b2=new JButton("-");  b2.addActionListener(this);
      b3=new JButton("*");  b3.addActionListener(this);
      b4=new JButton("/");  b4.addActionListener(this);
      f1=new JButton(".");  f1.addActionListener(this);
      f2=new JButton("=");  f2.addActionListener(this); 
    这个是注册所有时间的监听
       对于ActionPerformed(e)这个函数来监听时间,根据e.getResource()来判断是哪个地方触发的时间,分为符号,数字,和等号,再进行相关的处理。
      

  3.   

    implements ActionListener 
    你实现了ActionListener(事件监听器)
    例如:s1.addActionListener(this);调用了点击事件addActionListener(this)这里不传了this,点击一次就调用actionPerformed()方法,this意思就是调用本类事件方法
      

  4.   

    如果程序流程还不明白,一个方法加一条输出语句。
    public void actionPerformed(ActionEvent e) { 
    }在这个方法里加一个System.out.println("进入了actionPerformed()");