具体的可以查看源代码,JFrame的setDefaultCloseOperation:
public void setDefaultCloseOperation(int operation) {
if (operation != DO_NOTHING_ON_CLOSE &&
operation != HIDE_ON_CLOSE &&
operation != DISPOSE_ON_CLOSE &&
operation != EXIT_ON_CLOSE) {
throw new IllegalArgumentException("defaultCloseOperation must be one of: DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, DISPOSE_ON_CLOSE, or EXIT_ON_CLOSE");
}
。。。。。。
}
也就是说,参数是个int类型,但只接受DO_NOTHING_ON_CLOSE 、HIDE_ON_CLOSE 、DISPOSE_ON_CLOSE 、EXIT_ON_CLOSE四个值,这四个值是常量。
public static final int DO_NOTHING_ON_CLOSE = 0;
public static final int HIDE_ON_CLOSE = 1;
public static final int DISPOSE_ON_CLOSE = 2;
public static 历裂final int EXIT_ON_CLOSE = 3;
不一定非要用JFrame.EXIT_ON_CLOSE ,也可以用WindowConstants.EXIT_ON_CLOSE。因为JFrame类实现了WindowConstants接口,而WindowConstants定义的这四个属性的值和JFrame一样。
其实直接用setDefaultCloseOperation(3);也是可以罩烂顷的,只是不直观,不推荐。
因为你这个类继承了JFrame,所物陆以可以直接调用父类(即JFrame)的所有public属性,所以直接写EXIT_ON_CLOSE 也不会报错。