错误:“非静态变量不能从静态上下文引用

时间:2015-11-15 09:43:13

标签: java compiler-errors

编译简单程序时遇到问题。我两天前开始使用Swing库,所以我还不够好。 错误是:“无法从静态上下文中引用非静态变量”,称为“WindowsEraser listener = new WindowsEraser();”。 有什么问题?

public class prog9{
    public class WindowEraser extends WindowAdapter{
        public void windowClosing(WindowEvent e){
            System.exit(0);
        }
    }
    public static void main(String[] args){
        JFrame frame = new JFrame("Frame with buttons");
        frame.setSize(400,400);
        JLabel label = new JLabel("I'm a Window");
        frame.add(label);   
        WindowEraser listener = new WindowEraser();
        frame.addWindowListener(listener);
        frame.setVisible(true);
    }
}

3 个答案:

答案 0 :(得分:0)

使WindowEraser静态,否则main()无法访问

答案 1 :(得分:0)

你也可以用这种方式实例化WindowEraser():

curl -XGET -G localhost/test 
     -H 'Content-Type: application/json' 
     -H 'Accept: application/json' 
     -d '{ "entities": [{ "id": 3, "email": "test@abc.com" }] }'

答案 2 :(得分:-1)

您不能从静态上下文引用非静态字段/类/方法(因为静态上下文可以更早地初始化,然后就不会引用非静态实体)

你应该使WindowEraser类静态:

 public static class WindowEraser extends WindowAdapter