日期:2014-05-20  浏览次数:20654 次

使用GUI控件自动生成的jTextArea在类外为什么不能对其操作?
各位老师,我碰到的问题问题如下:
我使用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");
}
}  
   

 

------解决方案--------------------
class JP {
public javax.swing.JTextArea jTextArea1;
....
}

class JP2 {
new JP().jTextArea1.append(""+ sensorData.getDate());
}

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