Ссылка на динамический установщик из динамического класса - PullRequest
0 голосов
/ 20 июня 2011

Я пытаюсь сослаться на установщика ... Я получил помощь и выбрал ответ слишком рано, прежде чем решить проблему .... см. Здесь: Использование установщика извне формы?

Итак, что я делаю, так это ... Данные поступают в журнал и анализируются, а затем возвращаются в форму, где они отображаются.

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.

Как я могу получить ссылку на мою основную форму?

Мех ... Я только что использовал статическое текстовое поле и статический установщик .... Все еще ищу лучшую идею.

1 Ответ

1 голос
/ 20 июня 2011

Единственное объяснение состоит в том, что когда вы создаете экземпляр Log, вы передаете null конструктору. Вы звоните new Log(mainform) до назначения mainform?

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

private MainForm mainForm = new MainForm();

Проверьте порядок строительства ваших объектов.

...