2012-03-07 7 views
2

私はJFrame(これはウィンドウのトップレベルコンテナです)と、JFrameに含まれているJComponent(私が実装したもの)の1つです。Java JFrameのサイズ変更されていない

私のJComponentのロジックの一部では、ウィンドウのサイズを特定のサイズに変更する必要がありますが、今は何を試しても問題ありません。私はsetPreferredSizesetSizeをJFrame、JComponent、およびContainerに呼び出して、コンポーネントのgetParent()を呼び出すことから戻ってきました。

サイズを変更した後にpackを呼び出さないように感じていますが、JComponentからJFrameにアクセスしてパックを呼び出す方法はわかりません(私はスイングの専門家ではありません)。

Window topLevelWindow = SwingUtilities.getWindowAncestor(myComponent); 
topLevelWindow.pack(); 

をコンポーネントに渡す:

あなたは

+0

'pack()'がサイズ変更されます。手動でサイズを設定する場合は、 'pack()'を呼び出さないでください。 –

答えて

3

あなたはいつもSwingUtilities#getWindowAncestorメソッドを呼び出すことにより、トップレベルウィンドウを取得することができますありがとうございます。 GUIがにレンダリングされた後にのみを呼び出すようにしてください。そうしないと、厄介なNullPointerExceptionが発生します。

+1

これは動作します、ありがとうございます。 – tnecniv

+0

@tnecniv:ようこそ!うれしかったよ! –

関連する問題