JFrame:获取实际内容大小

8
我已创建了一个JFrame,并尝试获取其大小,但是与我预期的不符,结果是错误的。
我已确定它包括操作系统边框和标题栏。
如何获取/设置可用于渲染的真实大小?

1
你确定它是 JPanel 而不是 JFrame 吗?如果是后者,请使用 frame.getContentPane().getSize()。你也可以在这个问题中找到有用的信息... - Kevin K
哦,抱歉,是的,它是一个JFrame。我不敢相信我把它们搞混了。对不起,我已经修正了问题。 - Ashley Davies
“这可能是因为我表达不清楚。” 更有可能是你的整个方法错误了。自定义渲染组件更常问的是“我有多大?”对于其他任何事情,布局应该自动处理大小,而不需要应用程序请求尺寸或大小。 - Andrew Thompson
JFrame内的JPanel返回0, 0作为其大小。 - Ashley Davies
"JFrame内的JPanel返回0,0作为其大小。" 很可能是因为frame.setVisible(true)尚未使JFrame可见。在第一次显示框架之前,它的大小为(0, 0)。 - Kevin K
对于希望设置实际内容大小(不包括标题栏等)的关注者,请参见https://dev59.com/c2Yr5IYBdhLWcg3wssKP - rogerdpack
2个回答

6

2
你的问题有些混乱:JPanels没有标题栏或窗口边框,它们是在JFrames内部的抽象容器。JFrames是带有标题栏和窗口边框的对象。 JPanel.getSize() 应该能按预期工作。但是,对于JFrames,你需要使用 JFrame.getContentPane().getSize(),因为 getContentPane() 返回的是实际内容区域的JPanel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接