大きな違いは、時間の経過とともに値がどのように変化するかです。そのため、選択する値は、コードで何をしたいかによって異なります。
単純にコードを呼び出すとsetPreferredSize(new Dimension(500, 500));
、期待どおりに動作します。優先サイズが 500x500 に設定されます。ただし、アプリケーション内の他のコードがこの値を新しい値で上書きする可能性があります。何でも呼び出すことができsetPreferredSize()
、このメソッドの最後の呼び出しが最終結果になります。
ただし、getPreferredSize()
コードでメソッドをオーバーライドすると、常に500x500 が返されます。コードのいずれかがメソッドを呼び出すかどうかは問題ではありませんsetPreferredSize()
。それらは事実上無視されるためです。と もオーバーライドするgetMinimumSize()
とgetMaximumSize()
、ウィンドウやその他のコンポーネントのサイズに関係なく、コンポーネントに固定サイズを強制できます。
ただし、@Andrew Thompson がコメントで述べたように、特に独自のレイアウト マネージャーを作成している場合、一部のレイアウト マネージャーはこれらを無視することを選択できるため、これは保証されません。また、一部の親コンテナーにカスタム コンポーネントを追加すると無視されます。これらのメソッドは、コンポーネントがどこでどのように使用されるかに応じて異なります。setPreferredSize()
とにかく、他のコードから簡単に呼び出され、完全に上書きされる呼び出しよりもまだ厳格です。
また、コンポーネントを適切にペイントするために特定の寸法が必要なカラー ピッカーなど、カスタム コンポーネントのgetPreferredSize()
メソッド (プラスgetMinimumSize()
と)もオーバーライドします。これらのメソッドをオーバーライドしないと、Swing レイアウト マネージャーは、またはgetMaximumSize()
のサイズに合わせてカスタム コンポーネントを適切に配置およびサイズ変更する方法を理解できません。JFrame
JPanel