import java.awt.*;
 import java.awt.event.*;
public class test {
    
    public static void main(String[] args) throws Exception {
     
      new myframe().launch();    
 }
}
class myframe extends  Frame{
 TextField num1,num2,num3;
 public void launch(){ 
  num1=new TextField(10);
  num2=new TextField(10);
  num3=new TextField(15);
 Label plus=new Label("+");
 Button equal=new Button("=");
 equal.addActionListener(new myframe2());
 add(num1);
 add(plus);
 add(num2);
 add(equal);
 add(num3);
 setLayout(new FlowLayout());
 pack();
 setVisible(true);
 }
 
}
class myframe2 implements ActionListener {
 myframe tf=new myframe();
 
  public void actionPerformed(ActionEvent e){
   int n1=Integer.parseInt(tf.num1.getText());
   int n2=Integer.parseInt(tf.num2.getText());
   tf.num3.setText(""+(n1+n2));
  }
}
(程序能运行。。但出现 Unknown Source 问题。。为什么呢?)

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    public class Test {
       
        public static void main(String[] args) throws Exception {
            new myframe().launch();
        }
    }
    class myframe extends Frame{
        TextField num1,num2,num3;
        public void launch(){ 
            setLayout(new FlowLayout());
            num1=new TextField(10);
            num2=new TextField(10);
            num3=new TextField(15);
            Label plus=new Label("+");
            Button equal=new Button("=");
            equal.addActionListener(new myframe2());
            add(num1);
            add(plus);
            add(num2);
            add(equal);
            add(num3);
            pack();
            setVisible(true);
        }
        class myframe2 implements ActionListener {
            public void actionPerformed(ActionEvent e){
                int n1=Integer.parseInt(num1.getText());
                int n2=Integer.parseInt(num2.getText());
                num3.setText(""+(n1+n2));
            }
        }
    }
      

  2.   

    怎么不行,我验证过。我使用的是6u24。
    你的代码问题在事件处理里的myframe和主窗口不是同一个。
      

  3.   

    你 myframe2 里的那个 myframe 是个独立的个体,和main里new的那个毫不相干
      

  4.   


    class myframe2 implements ActionListener {
     myframe tf=new myframe();
      ……
    }
    =======================
    应该是死这里你又重新new了一个myframe。
      

  5.   

       你 myframe2 里的那个 myframe 是个独立的个体,和main里new的那个毫不相干
      
     为什么不相干的?我不是new了一个对象了吗,应该能访问该类的变量了吧。。
      

  6.   

    本来程序运行看到的是一个myframe ,你在响应时间的时间又新建了一个,两个是没有关系的,而你的myframe tf=new myframe();使用的是默认构造函数,而你组件的初始化是在launch()里,因为这个才没有source吧
      

  7.   

    不是你说的未知源问题(Unknow source),你这个是空指针异常
    我的代码:
    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Frame;
    import java.awt.Label;
    import java.awt.TextField;
    import java.awt.event.*;public class Testawts {    Frame frame;
        TextField tf1, tf2, tf3;
        Label ladd;
        Button btequ;    public Testawts() {
            frame = new Frame();
            tf1 = new TextField(10);
            tf2 = new TextField(10);
            tf3 = new TextField(10);
            ladd = new Label("+");
            btequ = new Button("=");
        }    public void launchFrame() {
            frame.add(tf1);
            frame.add(ladd);
            frame.add(tf2);
            frame.add(btequ);
            frame.add(tf3);
            frame.setLayout(new FlowLayout());
            frame.setVisible(true);
            btequ.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {
                    int n1 = Integer.parseInt(tf1.getText());
                    int n2 = Integer.parseInt(tf2.getText());
                    tf3.setText("" + (n1 + n2));
                }
            });    }
        public static void main(String argS[]) {
            new Testawts().launchFrame();
        }
    }