當前位置:成語大全網 - 英語詞典 - Java中setExtendedState(int)方法設置成MAXIMIZED_HORIZ後窗口

Java中setExtendedState(int)方法設置成MAXIMIZED_HORIZ後窗口

原因是我們的windows平臺可能不完全支持其中的宏對應的窗口大小,

以我的平臺來說(我的是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, 我們可以壹起討論。