从项目中的另一个文件读取数据

时间:2013-03-27 20:23:04

标签: java swing user-interface file-io

我陷入了一个我确信很容易克服的问题。主类用于构建一个gui:

// AlladinLamp.java

package alladinlamp;


import javax.swing.table.*; 
import javax.swing.*; 
import java.awt.*;

class AlladinLamp  {

int fnh;
ComboBox runners;

[ ...code ]

AlladinLamp()  {

[ ...code ]

runners = new JComboBox( numberOfRunners );
       runners.setMaximumRowCount(5); 
       runners.addActionListener( new ActionListener() {   
          @Override
          public void actionPerformed( ActionEvent e ) {
             String  runnersNumber = ( String )runners.getSelectedItem();
             fnh = Integer.parseInt( runnersNumber ); 
}

[ ...code ]

public int getFNH() { return fnh; }

[ ...code ]

SwingUtilities.invokeLater( new Runnable()  {
            @Override
            public void run()  {
                AlladinLamp lamp = new AlladinLamp();                 
            }
        });

}

我希望能够从其他文件中读取fnh

package alladinlamp; 

Class Processes  {

   int fullNH;
   AlladinLamp lamp;



   Processes()  {
      lamp = new AlladinLamp();
      fullNH = lamp.getFNH();

[ ...code ]

}

[ ...code ]

}

但它没有发生(fnh = null)。整数在它创建的同一个文件中读取。我究竟做错了什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我怀疑这里发生的事情是AlladinLamp中设置你感兴趣的变量的actionPerformed()方法被称为之后你的Processes类的构造函数...这是试图使用那个号码。在这里尝试的简单方法是在actionPerformed中插入System.out.println,并在AlladinLamp和Processes构造函数的末尾插入System.out.println,并查看事情发生的顺序。

这与其他海报提到的包装无关。如果不指定public,则默认可见性是包级别可见性,因此应该没有问题。

忘了提....请记住,Swing库是一个基于事件的GUI库。因此,您的GUI将首先构建。直到以后才会调用actionPerformed方法...一旦设置了整个UI并且你从组合框中选择了一些东西。