怎么叫这个班?

时间:2014-05-04 05:47:13

标签: 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); //jFrame
        }   
    }); 
}

public static void foo(String s){ //invoked by another class
    mf.validate();

}       
}

在run()外部调用mf的方法返回null值。如何在MainFrame中调用方法?

3 个答案:

答案 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...