Java 从表单外部使用setter?

Java 从表单外部使用setter?,java,text,setter,Java,Text,Setter,我试图从另一个非静态的类访问一个非静态的表单。我想在班上用一个成员 Public Class MainForm public void setConsoleText(String Text){ jTextArea1.append(Text); } 我需要知道从我的类“Log”中引用这个setter的方法,这个类基本上就是解析和记录数据的地方。我希望它是这样的: private void consoleOut(String data) { System.out.

我试图从另一个非静态的类访问一个非静态的表单。我想在班上用一个成员

Public Class MainForm
public void setConsoleText(String Text){
    jTextArea1.append(Text);
}
我需要知道从我的类“Log”中引用这个setter的方法,这个类基本上就是解析和记录数据的地方。我希望它是这样的:

    private  void consoleOut(String data) {
        System.out.println(data);
        MainForm.setConsoleText("data");
    }
我无法访问此方法。。我只能访问MyForm.Class。有没有一种方法可以引用这个虚拟机中已实例化的一个或所有实例?这其实并不重要,因为在这个JavaVM实例中只会运行其中一个


我似乎无法理解这一点。

您需要为Log提供一个非静态MainForm变量,并将对当前可视化MainForm对象的引用传递到Log类和该变量中。这可以通过日志构造函数参数或setter方法完成。然后您可以在此实例上调用方法(但首先要检查它是否为null)。比如:

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对象并在某个地方从主方法显示它,则创建日志并将可视化的MainForm传递给日志构造函数,如下所示:

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);
   //...
}

请注意,如果这对您没有帮助,您需要发布更多的代码。

@Adam:没问题,您的感谢就可以了。很高兴你让它工作了!嗯,我想我说得太快了。Myform总是空的@亚当:那么你在传递一个空引用,这是你不应该做的。这与你没有展示给我们的代码有关。所以,就像,我只需要传入任何旧变量,它就可以追溯到以前?@Adam:你必须更具体一些。您需要传入当前可视化的mainformpure和simple。如果您仍然被卡住,请在您的问题中发布更多代码,并用注释标记我。