从项目中的另一个文件中读取数据
问题描述:
我陷入了一个我相信很容易克服的问题。主类是用来建立一个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();
}
});
}
我希望能够从另一个文件
package alladinlamp;
Class Processes {
int fullNH;
AlladinLamp lamp;
Processes() {
lamp = new AlladinLamp();
fullNH = lamp.getFNH();
[ ...code ]
}
[ ...code ]
}
阅读FNH但it's没有发生(fnh = null)。该整数是在它创建的同一个文件中读取的。我究竟做错了什么?任何帮助将不胜感激。
答
我怀疑这里发生了什么是的actionPerformed()在AlladinLamp方法,它设置变量你有兴趣,正在构造为您的工艺类......这是尝试使用后调用数。这里很容易尝试的是在该actionPerformed中插入System.out.println,并在AlladinLamp和Processes构造函数的末尾插入System.out.println,并查看事件发生的顺序。
与其他海报提到的包无关。如果您不指定公开,则默认可见性是包级别可见性,因此应该没问题。
忘了提及....请记住,Swing库是一个基于事件的GUI库。所以你的GUI将首先被构建。该actionPerformed方法将不会被调用,直到以后...一旦你的整个用户界面设置,你已经从组合框中选择了一些。
嗨,我把这些陈述你问我。当我将它放置在Process类的构造函数中时,我没有输出。这好像与主要班级完全没有关系。 – user2143292 2013-03-28 00:06:07
不理解这一点。你真的在任何地方使用Process类吗?也许发布更多的代码会有帮助。 – jkratz 2013-03-28 12:37:36