【问题标题】:JFrame window size too big for screen?JFrame 窗口大小对于屏幕来说太大了?
【发布时间】:2019-04-07 16:07:30
【问题描述】:

好的,所以我几乎整天都在尝试为此寻找答案,但似乎找不到任何答案。 :/

使用 JFrame,我一直在尝试将窗口设置为 1920x1080 分辨率,但是当我尝试这样做时,它似乎将整个屏幕用作窗口,有点像我的屏幕分辨率是 1920x1080 但它是 3840x2160,这是为什么呢?当我运行另一个具有 1920x1080 分辨率窗口的应用程序时,它的大小似乎不一样。 (它更小)

当前代码:

JFrame frame = new JFrame("Test");
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int width = gd.getDisplayMode().getWidth();
int height = gd.getDisplayMode().getHeight();
frame.setSize(width, height);
System.out.println(width+" "+height);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setVisible(true);

这个输出是一个窗口,它覆盖了我的屏幕,但在某些部分有点偏离,然后在控制台中显示3840 2160。如果我更改frame.setSize(width, height); 从当前到frame.setSize(1920, 1080); 它仍然使窗口大小相同。由于某种原因,我认为最大值略低于 1920x1080。 :/ 这里有什么想法吗?

编辑:似乎使用frame.setSize(Toolkit.getDefaultToolkit().getScreenSize()); 使窗口大小为 1536x864 而不是 3840x2160,将其设置为高于 1536x864 没有区别,它会说尺寸更大但我看不出任何区别,它涵盖了反正屏幕。

【问题讨论】:

    标签: java swing jframe window


    【解决方案1】:

    尝试使用以下内容代替frame.setSize(...)

    frame.setPreferredSize(new Dimension(1920, 1080));

    【讨论】:

    • frame.setPreferredSize(new Dimension(1920, 1080)); 返回宽度为 0 高度为 0 的大小。:/
    • @KarimAKL 你说的...返回...是什么意思?
    • 我的错,我的意思是在frame.setPreferredSize(new Dimension(1920, 1080)); 之后使用System.out.println(frame.getSize()); 的输出是0 和0
    【解决方案2】:

    如果您希望框架填满桌面,请使用:

    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setVisible(true);
    

    这将使框架具有适当的大小,因此它不会覆盖任务栏。

    如果您希望框架覆盖包括任务栏在内的屏幕,则可以使用:

    frame.setSize( Toolkit.getDefaultToolkit().getScreenSize() );
    frame.setVisible( true );
    

    【讨论】:

    • 我已经知道frame.setExtendedState(JFrame.MAXIMIZED_BOTH);,这不是我想要的。将其设置为 ScreenSize 也不是我想要的,但我发现了一些我之前忘记写的有趣的东西,似乎 Toolkit 中的 ScreenSize 是 1536x864 而不是 3840x2160。 (我将在此评论后进行编辑)知道为什么会这样吗?
    【解决方案3】:

    那是因为你的窗口缩放没有设置为 100%。

    【讨论】:

    • 自从我发布此内容以来已经有一段时间了,但是,无论如何,谢谢你。 :) 如果我再次使用 Swing,我将不得不尝试这个。
    猜你喜欢
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多