setDefaultCloseOperation可以在不指定任何对象的情况下工作吗?

时间:2012-11-28 16:29:02

标签: java swing jframe

我遇到了一个调用setdefaultcloseoperation()而不引用任何对象的代码。我读到参考对象调用方法。这是代码

public class Mainpage extends JFrame implements ActionListener{
    JFrame f = new JFrame("Mainpage");

    public Mainpage() {
        super("Mainpage");
        f.setSize(1000,6000);
        f.getContentPane().setLayout(null);
        f.setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE); // how is this happening?
}

我想知道setDefaultCloseOperation(EXIT_ON_CLOSE);是如何运作的。感谢。

2 个答案:

答案 0 :(得分:4)

方法setDefaultCloseOperation引用JFrame的当前实例。


一些旁注:

1)此处不需要第二个JFrame f

public class Mainpage extends JFrame implements ActionListener{

public Mainpage(){
   super("Mainpage");
   setSize(1000,6000);
   ...
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   setVisible(true);
}

2)避免使用null布局。请参阅Doing Without a Layout Manager

答案 1 :(得分:4)

你扩展了JFrame。所以从本质上讲,你正在做this.setDefaultOperation(EXIT_ON_CLOSE)

JFrame内创建JFrame也没有意义..除非这是你的实验。简单的答案是不要扩展JFrame,并使用 f.setDefaultOperation(EXIT_ON_CLOSE)