2011-08-22 92 views
7

我創建了一個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

*「這可能是因爲我錯誤的措辭」*更可能你的整個方法是錯誤的。自定義渲染組件更常見的問「我有多大?」。對於其他任何事情,佈局應該自動處理大小,沒有應用程序。曾經詢問尺寸或尺寸。 –

回答

5

您正在獲得的大小是內容的大小的大小insets。如果您使用Jcomponent.getInsets(),您可以通過簡單的減法找到內容的大小。

+0

謝謝,現在工作:) –

2

你的問題很混亂:JPanels沒有標題欄或窗口邊框,它們是抽象的容器,它們是INSIDE JFrames。 JFrames是帶有標題欄和窗口邊框的對象。

JPanel.getSize()應該按預期工作。但是,對於JFrame,您需要使用JFrame.getContentPane().getSize(),因爲getContentPane()返回JPanel(這是實際的內容區域)。