2011-08-22 19 views
7

私はJFrameを作成しましたが、サイズを取得しようとすると、私が期待していたものに比べて不正確な結果が出ています。JFrame:実際のコンテンツサイズを取得する

私は、それがエッジの周りのオペレーティングシステムの境界とタイトルバーを含むと判断しました。

レンダリングに使用できる実際のサイズはどのように取得/設定できますか?

+1

「JFrame」ではなく「JPanel」ですか?後者の場合は、 '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にはタイトルバーやウィンドウの枠線がありません。これらはJFrameの内側にある抽象的なコンテナです。 JFramesは、タイトルバーとウィンドウ枠を持つオブジェクトです。

JPanel.getSize()は意図したとおりに動作するはずです。しかし、は、実際のコンテンツ領域であるJPanelを返すので、JFrame.getContentPane().getSize()を使用することをお勧めします。

関連する問題