我刚学java,所以才遇到这种问题
我用jbuilder建立了一个gui的应用程序,其中有2个java文件Application1.java和Frame1.java
我在Frame1.java上添加了一个按钮和一个文本框。并给按钮加了一个事件监听器
然后添加了一个新的类,在单独的一个文件上test.java(它们在同一个包中)
--------------------------------
package untitled1;public class test {
    public void test1 (){
        Frame1 gettext = new Frame1() ;
        gettext.jTextArea2.setText("1111");
    }
}
--------------------------------然后在Frame1上的按钮写了一个单击的事件--------------------------------
public void jButton1_actionPerformed(ActionEvent e)
    {      try{            test aaaa = new test();
            aaaa.test1() ;
               }
           catch(Exception e1){}
    }
----------------------------------------------------------------
理论上在单击按钮后,会创建一个test的实例对象,然后调用实例对象的test1方法
在文本框中输出“1111”的字符串,但结果没有我开始以为是按钮的单击事件有问题,我就直接在单击事件中jTextArea2.setText("1111");
结果正常显示“1111”偶想了半天也不知道是哪里错误
请高人指点

解决方案 »

  1.   

    gettext.jTextArea2.setText("1111");
    -------gettext是什么????
      

  2.   

    改为:
    //test.java
    package untitled1;public class test {
        public void test1 (JTextArea JTA_txt){
            JTA_txt.setText("1111");
        }
    }
    //frame1.java
    ........
    public void jButton1_actionPerformed(ActionEvent e)
        {      try{            test aaaa = new test();
                aaaa.test1(jTextArea2) ;
                   }
               catch(Exception e1){}
        }..........
    ----------------------------------------------------------
    首先,test类是为frame1类服务的,它的test1是处理对frame1类中的jTextArea2的赋值内容的
    其次,在点击事件中建立test的实例对象aaaa时,Frame1类已经存在,所以在test类中的test1方法中不能再建立frame1类的实例对象,这样会调用一个空的对象。而你想调用的Frame1类已经在内存中存在了,所以要想达到你的意图,见以下代码,当然我上面的代码也是可行的。//test.java
    package untitled1;public class test {
        public void test1 (){
            Frame1.getInstance().jTextArea2.setText("1111");
           //Frame1是类名,不能直接用Frame1调用它的子民(如公共方法和变量)
        }
    }
    //frame1.java
      public static Frame1 instance = new Frame1();
    ........
      public Frame1(){  //构造函数
          instance = this;  //在构造函数中得到本类的实例
     }
      public static Frame1 getInstance(){
         return instance;
     }
    public void jButton1_actionPerformed(ActionEvent e)
        {      try{            test aaaa = new test();
                aaaa.test1() ;
                   }
               catch(Exception e1){}
        }
    }
    ..........                                                       ------罗毅