我正在尝试引用一个二传手...我在得到解决问题之前就收到了帮助并过早选择了答案....请参阅此处:Using a setter from outside a form?
所以,我正在做的是......数据进入日志并被解析,然后返回到显示它的表单。
public class Log {
private MainForm mainForm; // our MainForm variable
public Log(MainForm mainForm) {
// setting the MainForm variable to the correct reference in its constructor
this.mainForm = mainForm;
}
private void consoleOut(String data) {
System.out.println(data);
if (mainForm != null) {
// now we can use the reference passed in.
mainForm.setConsoleText("data");
}
}
}
这是我表格中的二传手。
public class MainForm extends FrameView {
public MainForm(SingleFrameApplication app) {
super(app);
...........CUT FOR LENGTH.................
public void setConsoleText(String Text){
jTextArea2.append(Text);
}
为简单起见而编辑。
由于某些原因,MainForm总是在Log类中出现null。
如何获得对我的主表单的引用?
Meh ...我刚刚使用静态文本框和静态setter ....仍在寻找更好的主意。
答案 0 :(得分:1)
唯一的解释是,当您实例化Log时,您将null传递给构造函数。您是否在分配主要表单之前调用了new Log(mainform)
?
// Don't do this
private Log log = new Log(mainForm);
private MainForm mainForm = new MainForm();
检查对象的构造顺序。