微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何获得显示尺寸而不是屏幕尺寸?

如何解决如何获得显示尺寸而不是屏幕尺寸?

我在互联网和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);

阅读Layout Managers上的Swing教程,以获取更多信息和使用布局管理器的示例。

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

但是,在这种情况下,您希望使用最大化的帧:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。