Java 这门课怎么叫?
我有一个调用称为MainFrame的定制JFrame类的主类Java 这门课怎么叫?,java,Java,我有一个调用称为MainFrame的定制JFrame类的主类 public class App { public static MainFrame mf; public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { MainFrame mf = new MainFrame(Workers);
public class App {
public static MainFrame mf;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
MainFrame mf = new MainFrame(Workers); //jFrame
}
});
}
public static void foo(String s){ //invoked by another class
mf.validate();
}
}
在run()外部调用mf的方法返回空值。如何在大型机内部调用方法?您只需在方法范围之外声明类,以便以后使用
MainFrame mf;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
mf = new MainFrame(Workers); //jFrame
}
});
这是因为一个叫做范围的东西。您的变量仅在声明它的括号中有效。之后,垃圾收集器会自动将其删除。您已经声明了
大型机mf代码>外部
因此,请替换此语句
MainFrame mf = new MainFrame(Workers);
与
为了访问run()外部的对象,请在方法外部声明类。像这样:
MainFrame mf;
// following actions...
你们真是太快了。太谢谢你了,我快疯了。它甚至不会让我这么快接受答案。A+作为旁注,如果您可以避免它,那么您不希望共享可变状态,尤其是静态
变量中的任何状态。如果可能的话,将它交给需要的实例(注意这仍然是危险的,但至少你已经明确选择了与谁共享它)。
MainFrame mf;
// following actions...