【发布时间】:2023-03-04 01:09:02
【问题描述】:
我想创建一个最初最大化的 JFrame,并具有定义的大小,当用户按下最大化按钮时它会缩小。
小例子:
package minimalfullscreenexample;
import java.awt.Dimension;
import static java.awt.Frame.MAXIMIZED_BOTH;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class MinimalFullscreenExample {
public void displayFrame() {
JFrame frame = new JFrame("Minimal example");
frame.setExtendedState(MAXIMIZED_BOTH);
frame.setPreferredSize(new Dimension(500, 300));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> { new MinimalFullscreenExample().displayFrame(); });
}
}
预期行为:窗口最大化打开。当用户单击最大化按钮时,窗口变为未最大化,大小为 500x300 像素。
这可以正常工作
- Linux、oracle jdk 1.8.0_201
- Linux,openjdk 1.8.0_252
- Linux,openjdk 11.0.7
- Linux,openjdk 12.0.1
- Windows、oracle jdk 1.8.0.171(旧版本,我知道,但是 .. 示例有效)
这不适用于
- Windows,openjdk 12.0.1
窗口未最大化打开的位置。
当setPreferredSize 调用被删除时,窗口打开最大化,但在取消最大化时缩小为“无”。
是否有任何已知的错误或解决方法? (将setPreferredSize 移动到setExtendedState 上方没有帮助)。
【问题讨论】:
-
虽然我无法重现此处的行为(在 Windows 上的 Sun/Oracle 1.8 变体中),但我建议将
frame.setExtendedState(MAXIMIZED_BOTH);移至frame.pack();之后。这适用于您正在测试的 Open JDK 版本吗? -
我在 4 月 29 日提出了一个问题,并在选项卡中打开了这个问题,等待回复。当我厌倦了它弄乱了我的浏览器标签时,我关闭了它,但决定在我做之前投反对票。 (无需感谢我回答您的问题 - 不客气!)
标签: java swing jframe fullscreen