我的主类调用了一个名为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); //jFrame
}
});
}
public static void foo(String s){ //invoked by another class
mf.validate();
}
}
在run()外部调用mf的方法返回null值。如何在MainFrame中调用方法?
答案 0 :(得分:3)
您只需要在方法范围之外声明您的类,以便以后使用它。
MainFrame mf;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
mf = new MainFrame(Workers); //jFrame
}
});
这是因为名为范围的事情而发生的。您的变量仅在声明它的括号中存活。之后,垃圾收集器会自动删除它。
答案 1 :(得分:3)
您已在{<1}}外宣布
所以只需替换此声明
MainFrame mf;
与
MainFrame mf = new MainFrame(Workers);
为了访问run()
之外的对象答案 2 :(得分:1)
在方法之外声明类。像这样:
MainFrame mf;
// following actions...