成语大全网 - 汉语词典 - 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, 我们可以一起讨论。