我需要在调整主JFrame大小时找到组件的确切屏幕大小(以像素为单位)。
我已经尝试了几件事,但却找不到一个简单的方法:它可能已经遗漏了一些明显的东西。
BBBBB JFRAME BORDER BBB
BZZZZZZZZZZZZZZZZZZZZZB
BAAAAAAAAAAAAAAAAAAAAAB
BCC1................DDB
BCCC................DDB
BCCC................DDB
BCCC................DDB
BCCC................2DB
BEEEEEEEEEEEEEEEEEEEEEB
BBBBBBBBBBBBBBBBBBBBBBB
调整大小后,如果用户将主JFrame缩短(垂直)和缩放(水平),则可能会出现这种情况:
BBBBBB JFRAME BORDER BBBBBB
BZZZZZZZZZZZZZZZZZZZZZZZZZB
BAAAAAAAAAAAAAAAAAAAAAAAAAB
BCC1....................DDB
BCCC....................2DB
BEEEEEEEEEEEEEEEEEEEEEEEEEB
BBBBBBBBBBBBBBBBBBBBBBBBBBB
我想要的是在屏幕上找到由点表示的矩形区域的确切大小(以像素为单位)。
我正在添加ComponentListener
以获取调整大小事件,这样可以正常工作。
我遇到的问题是在Component上调用getWidth()/ getHeight()显然不返回组件的屏幕大小但是组件的实际大小(例如,你可以拥有) ,JPanel比它所用的组件更广泛。)
任何暗示都是最受欢迎的。
答案 0 :(得分:9)
答案 1 :(得分:1)
getWidth()
和getHeight()
返回组件的宽度和高度。我从未听说过“实际”宽度/高度和“屏幕”宽度/高度之间的任何差异。
但是,某些布局管理器不会在面板中填充其包含的组件,并且组件和面板边缘之间的某些空间可能不会被组件占用。在这种情况下,我通常会在底层面板上setBackground(Color.BLUE)
看看发生了什么。
答案 2 :(得分:0)
这是一种非常垃圾的方式,但您可以使用包装面板,将主面板放入其中。您可以从包装器面板中调用getWidth()
和getHeight()
。