各位老师,我碰到的问题问题如下:
我使用Netbeans里的控件做了一个软件界面,其中有一个文本域jTextArea是用来显示数据库里信息的,下面代码的第一行就是控件拉好后系统自动生成的代码。printData()方法是我想用来对这个文本域设置显示文本信息的方法。我想把这个方法封装一下,写一个专门的类来描述它,因为要涉及到数据库中数据的实时显示,需要另做定时器来调用这个方法。遇到的问题是这样的:当我把这个方法单独拿出来建立了一个类后,在这个新建的类里,是无法访问jTextArea1这个文本域的,无法对其进行操作。有没有解决这个问题的方法呢?各位老师,谢谢!初学java,或许问题本身幼稚,各位老师见谅!  
    public javax.swing.JTextArea jTextArea1;
    // End of variables declaration                   
    
   public void printData(){       
      java.util.List<Sensor> sensorInfo = new ArrayList<Sensor>();        
       DataBase db_light=new DataBase();
       sensorInfo =db_light.getData();
       Iterator<Sensor> sensorInfoIte = sensorInfo.iterator();  //
       
   while (sensorInfoIte.hasNext()) {
      Sensor sensorData= new Sensor();
      sensorData=sensorInfoIte.next();
    
    jTextArea1.append(""+ sensorData.getDate());
    jTextArea1.append("               ");
    jTextArea1.append(""+ sensorData.getLight());
    jTextArea1.append("                 ");
    jTextArea1.append(""+ sensorData.getTemperature());
    jTextArea1.append("\n");
}
}      
         

解决方案 »

  1.   

    class JP {
    public javax.swing.JTextArea jTextArea1;
    ....
    }class JP2 {
        new JP().jTextArea1.append(""+ sensorData.getDate());
    }为什么要这样做呢?
      

  2.   

        哦,我想错了。当我在主函数里调用这个方法后,在文本框里什么都不显示,而当我把这个方法下载所属类的构造方法里时可以正常显示数据库里边的数据?所以我就想把它单独写出来,想错了,不关这个的事儿。
        那我碰到的这个问题是为什么呢?
         mainFrame mainframe=new mainFrame();
         mainframe.printData();文本域里什么也没有发生
      

  3.   


    琢磨了一圈,又回到最开始的问题上了:为什么在自动生成的定义jtextArea1的类mainFrame外无法对这个文本域进行操作呢?(mainFrame类是我使用Netbenas控件构建图形界面的类)
    因为这个原因,我的printData()方法也只能写在mainFrame类中。
    另外,当我在工程的main方法中使用printData()方法时:
           mainFrame mainframe=new mainFrame();
           mainframe.printData();
    文本域jTextArea1里什么也没有发生;然后我试着调试这个方法:我在printData()方法里加入了两条控制台输出命令:
    public void printData(){    
          System.out.println("sssss");
          jTextArea1.append("this is a test!\n");         
           System.out.println("aaaaa");
    运行程序过后,发现串“sssss”和“aaaaa”都是可以在控制台输出的,但是它们之间的这条jTextArea1.append("fuck!\n"); 语句并没有能够在GUI界面的文本域中显示任何信息,这能否说明在类mainFrame外是无法对jTextArea1进行操作的吗?于是我把这个printData()方法写在了mainFrame类的构造方法中:
          public class mainFrame extends javax.swing.JFrame  {
          printData();
    }
    这时候,运行程序时,在GUI界面的文本显示域中就有了数据库中的数据显示出来。
    但这是不正常的吧?不应该把这么一个方法随时放在构造方法里调用老师们,我碰到的这个问题原因出在哪里呢?有没有人也碰到过?谢谢!
      

  4.   

    jTextArea1的定义是这样的:public javax.swing.JTextArea jTextArea1;
    原本为private,我将他设置成了public后,上述的问题依然存在
      

  5.   

    你要显示数据到指定文本上肯定不能new嘛
    new了就是新的窗体对象,怎么可能显示到原来的窗体对象上
    新类中添加一个构造函数,参数是JTextArea ,构造对象的时候传你要改变的JTextArea 对象进去