JFrame窗口大小对于屏幕太大吗?

时间:2018-11-03 20:07:47

标签: java swing jframe window

好吧,所以我几乎整天都在努力寻找答案,但似乎找不到任何答案。 :/

使用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并没有区别,它会说尺寸更大,但我看不到任何区别,它仍然会覆盖屏幕。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

那是因为您的窗口缩放比例未设置为100%。