如何获取显示大小而不是屏幕大小



我搜索了互联网和StackOverflow,找到了很多方法来获取当前屏幕大小,但
屏幕大小不是显示大小,有办法获取显示大小而不是屏幕大小吗

我目前正在使用以下代码行来获取屏幕大小:

//size of the screen
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setUndecorated(true);
frame.setAlwaysOnTop(true);
frame.setVisible(true);
frame.add(panel);
//get screensize
int height = (int) screenSize.getSize().getHeight();
int width = (int) screenSize.getSize().getWidth();
System.out.println("Current system width & height: " + screenSize.width + ", " + screenSize.height);
frame.setSize(width, height);

有人知道如何获得显示器尺寸吗?还是真的不可能?

我想在的右上角放置一个按钮

这正是我询问您实际需求的原因,而不是您尝试的解决方案。您尝试的解决方案是错误的。

  1. 不要使用空布局。Swing设计用于布局管理器。JFrame的默认布局管理器是BorderLayout。因此,您可以创建一个JPanel并使用右对齐的FlowLayout(阅读API以获得正确的构造函数。然后将按钮添加到面板,将面板添加到框架

因此,要在顶部/右侧添加组件,基本逻辑为:

JButton button = new JButton(...);
JPanel top = new JPanel( new FlowLayout(...) );
top.add(button);
frame.add(top, BorderLayout.PAGE_START);

阅读关于布局管理器的Swing教程,了解更多信息和使用布局管理器示例。

  1. 不要使用setSize((方法。通常,在将所有组件添加到框架后,您将使用pack()方法,并且框架将根据添加到框架的所有组件的首选大小来调整自身大小

然而,在这种情况下,您希望帧最大化,您将使用:

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

将所有组件添加到框架后。

最新更新