全屏JFrame不覆盖屏幕

时间:2018-12-17 10:53:04

标签: java swing

我已经找到了解决方案,但似乎找不到。
如果已经回答了,请将我链接到答案。我正在创建一个JFrame将其设置为全屏并更改显示模式。
一切正常,显示模式受我的图形卡支持(我已经检查过),所以一切正常。我将画布添加到JFrame,创建缓冲策略,并使用它在屏幕上绘制自定义图形。问题是,当显示模式更改并且JFrame进入全屏模式时,它不会覆盖全屏。这没有意义,因为显示模式为1024 x 768,画布大小也为1024 x768。
而是将画布以与不更改显示模式时相同的比例放置在屏幕的左上角。此外,图形不能正确绘制。当我不尝试更改显示模式并设置全屏时,一切正常。

这是三行代码,可将所有内容设置为全屏显示。

gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
    gd.setFullScreenWindow(this);
    gd.setDisplayMode(new DisplayMode(1024,768,32,48));

我正在运行Windows 10,并且我的正常显示模式是3840x2160。这是运行代码时发生的屏幕截图。

screen shot

尽管看起来不像它,但显示模式肯定会随着屏幕变黑而变化,然后屏幕变得更小,更模糊。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用setExtendedState最大化窗口? (例如下面的示例)

import javax.swing.JFrame;

public class MaximizedFrame
{
  public static void main(String[] args)
  {
    JFrame frame = new JFrame("My Frame");
    frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    frame.setVisible(true);
  }
}