如何获得显示尺寸而不是屏幕尺寸?
How to get the display size and not the screen size?
我搜索了互联网和 Whosebug,找到了很多获取当前屏幕尺寸的方法,但是
屏幕尺寸不是显示尺寸,有没有办法获得显示尺寸和不是屏幕尺寸?
我目前正在使用以下代码行来获取屏幕尺寸:
//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);
有谁知道获取显示尺寸的方法吗?还是真的不可能?
I want to place a button on the top right
这正是我询问您的实际要求而不是您尝试的解决方案的原因。您尝试的解决方案是错误的。
- 不要使用空布局。 Swing 旨在与布局管理器一起使用。 JFrame 的默认布局管理器是
BorderLayout
。因此,您可以创建一个 JPanel 并使用右对齐的 FlowLayout
(阅读 API 以获得正确的构造函数。然后将按钮添加到面板,将面板添加到框架。
所以要向 top/right 添加一个组件,基本逻辑是:
JButton button = new JButton(...);
JPanel top = new JPanel( new FlowLayout(...) );
top.add(button);
frame.add(top, BorderLayout.PAGE_START);
阅读 Layout Managers 上的 Swing 教程,了解更多信息和使用布局管理器的示例。
- 不要使用 setSize() 方法。通常,您会在将所有组件添加到框架后使用
pack()
方法,并且框架会根据添加到框架的所有组件的首选大小自行调整大小。
但是在这种情况下,您希望框架最大化,您可以使用:
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
将所有组件添加到框架后。
我搜索了互联网和 Whosebug,找到了很多获取当前屏幕尺寸的方法,但是
屏幕尺寸不是显示尺寸,有没有办法获得显示尺寸和不是屏幕尺寸?
我目前正在使用以下代码行来获取屏幕尺寸:
//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);
有谁知道获取显示尺寸的方法吗?还是真的不可能?
I want to place a button on the top right
这正是我询问您的实际要求而不是您尝试的解决方案的原因。您尝试的解决方案是错误的。
- 不要使用空布局。 Swing 旨在与布局管理器一起使用。 JFrame 的默认布局管理器是
BorderLayout
。因此,您可以创建一个 JPanel 并使用右对齐的FlowLayout
(阅读 API 以获得正确的构造函数。然后将按钮添加到面板,将面板添加到框架。
所以要向 top/right 添加一个组件,基本逻辑是:
JButton button = new JButton(...);
JPanel top = new JPanel( new FlowLayout(...) );
top.add(button);
frame.add(top, BorderLayout.PAGE_START);
阅读 Layout Managers 上的 Swing 教程,了解更多信息和使用布局管理器的示例。
- 不要使用 setSize() 方法。通常,您会在将所有组件添加到框架后使用
pack()
方法,并且框架会根据添加到框架的所有组件的首选大小自行调整大小。
但是在这种情况下,您希望框架最大化,您可以使用:
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
将所有组件添加到框架后。