为什么JFrame重新定义了" EXIT_ON_CLOSE"它继承自界面" WindowConstants"?

时间:2014-12-08 12:40:57

标签: java swing jframe windowlistener

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,如何重新定义?

1 个答案:

答案 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字段。