JFrame:获取实际内容大小

问题描述:

我创建了一个JFrame,并试图获得它的大小给出了一个不正确的结果,与我的预期相比。JFrame:获取实际内容大小

我确定它包括边缘周围的操作系统边框和标题栏。

如何获取/设置我可用于渲染的真实大小?

+1

你确定它是'JPanel'而不是'JFrame'吗?如果是后者,请使用'frame.getContentPane()。getSize()'。你也可以找到[这个问题](http://stackoverflow.com/questions/2796775/setting-the-size-of-a-contentpane-inside-of-a-jframe)有用... –

+0

哦,对不起,是的,这是一个JFrame。我不能相信我把他们弄混了。道歉,我解决了这个问题。 –

+0

*“这可能是因为我错误的措辞”*更可能你的整个方法是错误的。自定义渲染组件更常见的问“我有多大?”。对于其他任何事情,布局应该自动处理大小,没有应用程序。曾经询问尺寸或尺寸。 –

您正在获得的大小是内容的大小的大小insets。如果您使用Jcomponent.getInsets(),您可以通过简单的减法找到内容的大小。

+0

谢谢,现在工作:) –

你的问题很混乱:JPanels没有标题栏或窗口边框,它们是抽象的容器,它们是INSIDE JFrames。 JFrames是带有标题栏和窗口边框的对象。

JPanel.getSize()应该按预期工作。但是,对于JFrame,您需要使用JFrame.getContentPane().getSize(),因为getContentPane()返回JPanel(这是实际的内容区域)。