WindowConstants
定义如下:
public interface WindowConstants
{
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
定义如下:
public class JFrame extends Frame implements WindowConstants,
Accessible,
RootPaneContainer,
TransferHandler.HasGetTransferHandler
{
/**
* The exit application default window close operation. If a window
* has this set as the close operation and is closed in an applet,
* a <code>SecurityException</code> may be thrown.
* It is recommended you only use this in an application.
* <p>
* @since 1.3
*/
public static final int EXIT_ON_CLOSE = 3;
为什么EXIT_ON_CLOSE
被重新定义?由于final
界面中的WindowConstants
,如何重新定义?
答案 0 :(得分:7)
在Java 1.3中,当全部添加时,EXIT_ON_CLOSE
仅与JFrame
相关,而与WindowConstants
的其他实现无关。因此 - WindowConstants
中存在不,并在JFrame
中定义。其他3个XXX_ON_CLOSE
选项位于界面中。 (英文Javadoc不再在线,但仍然可以下载,所以这里没有参考。如果你搜索“WindowConstants Java 1.3”你会得到一个日文版的Javadoc - 但由于页面结构相同,你仍然可以看到要点)
稍后(1.4)已移至WindowConstants
,但由于兼容性问题,该字段未从JFrame
移除。
那里没有重新定义。发生的事情是shadowing。即JFrame
字段会隐藏(但不会消除)WindowConstants
字段。