Используя сеттер извне формы? - PullRequest
1 голос
/ 19 июня 2011

Я пытаюсь получить доступ к форме, которая не является статической из другого класса, который также не является статическим. Я хотел бы использовать члена в классе ....

Public Class MainForm
public void setConsoleText(String Text){
    jTextArea1.append(Text);
}

Мне нужно знать способ обращения к этому установщику из моего класса «Журнал», который в основном предназначен для анализа и регистрации данных. Я хочу, чтобы это было так:

    private  void consoleOut(String data) {
        System.out.println(data);
        MainForm.setConsoleText("data");
    }

Я не могу получить доступ к этому методу .. Я могу получить доступ только к MyForm.Class. Есть ли способ сослаться на тот, который был создан, или все они в этой виртуальной машине? Это действительно не имеет значения, поскольку в этом экземпляре Java VM будет работать только один из них.

Я просто не могу понять это.

1 Ответ

2 голосов
/ 19 июня 2011

Вам нужно дать Log нестатическую переменную MainForm и передать ссылку на текущий визуализируемый объект MainForm в класс Log и в эту переменную. Это можно сделать с помощью параметра конструктора Log или с помощью метода установки. Затем вы можете вызывать методы для этого экземпляра (но проверяя, что он не равен нулю). Что-то вроде:

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");
     }
   }
}

Редактировать 1

Например, если вы создаете свой объект MainForm и где-то отображаете его из основного метода, создаете вместе с ним Log и передаете визуализированную MainForm в конструктор Log, что-то вроде этого:

public static void main(String[] args) {
   MainForm myMainForm = new MainForm();
   // ... whatever code is necessary to set up the 
   // ... MainForm object so it can be visualized
   myMainForm.setVisible(true); // and show it

   Log myLogObject = new Log(myMainForm);
   //...
}

Обратите внимание, что если это не поможет, вам нужно будет опубликовать больше кода.

...