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。如果您仍然被卡住,请在您的问题中发布更多代码,并用注释标记我。