我正在尝试引用 setter ...我收到了帮助并在解决问题之前太早选择了答案...请参见此处: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");
}
}
}
这是我表单中的 setter 。
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。
如何获得主表单的引用?
嗯...我只是使用了静态文本框和静态 setter ...仍在寻找更好的主意。
最佳答案
唯一的解释是,当您实例化 Log 时,您将 null 传递给构造函数。您是否在分配主窗体之前调用new Log(mainform)
?
// Don't do this
private Log log = new Log(mainForm);
private MainForm mainForm = new MainForm();
检查对象的构造顺序。
关于java - 从动态类引用动态 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406238/