以我的平臺來說(我的是win10企業版64位),它只支持JFrame.NORMAL、JFrame.ICONIFIED、JFrame.MAXIMIZED_BOTH,不支持JFrame.MAXIMIZED_HORIZ、JFrame.MAXIMIZED_VERT這兩個;
也就是說只支持默認大小、最小化、水平和垂直方向同時最大化,但並不支持(僅僅)水平方向最大化和(僅僅)垂直方向最大化。
我們驗證壹下這個說法:
JFrame win = new JFrame();
win.setVisible(true);
win.setBounds(1200, 400, 360, 640);
win.setExtendedState(0); //JFrame.NORMAL被定義為常量0
System.out.println(win.getExtendedState());
執行程序後,控制臺輸出0(就是JFrame.NORMAL的值),由此可知,我的電腦是支持JFrame.NORMAL的。
理解壹下這句出自java文檔裏的話
"Note that if the state is not supported on a given platform, neither the state nor the return value of the getExtendedState() method will be changed. "
參考有道詞典翻譯:
註意,如果在給定的平臺上不支持狀態,那麽getExtendedState()方法的狀態和返回值都不會改變。
好,現在我們試壹下那些不支持的
JFrame win = new JFrame();
win.setVisible(true);
win.setBounds(1200, 400, 360, 640);
win.setExtendedState(4); //JFrame.MAXIMIZED_VERT被定義為常量4
System.out.println(win.getExtendedState());
此時控制臺仍然顯示為0(就是JFrame.NORMAL的值)而不是4,說明我的平臺不支持
JFrame.MAXIMIZED_VERT。妳可能會問:既然不支持JFrame.MAXIMIZED_VERT,那為什麽控制臺輸出0(JFrame.NORMAL)呢?答案是:因為不支持,所以設置失敗,因為設置失敗,所以相當於沒有設置,因為沒有設置,所以java使用默認的ExtendState,而java規定該默認的ExtendState為JFrame.NORMAL,即0.
還有疑問可以聯系我郵箱:13435515713@163.com, 我們可以壹起討論。