从动态类引用动态setter

时间:2011-06-20 02:03:01

标签: java class logging dynamic 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");
     }
   }
}

这是我表格中的二传手。

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 ....仍在寻找更好的主意。

1 个答案:

答案 0 :(得分:1)

唯一的解释是,当您实例化Log时,您将null传递给构造函数。您是否在分配主要表单之前调用了new Log(mainform)

// Don't do this
private Log log = new Log(mainForm);

private MainForm mainForm = new MainForm();

检查对象的构造顺序。