setSize()
との主な違いは何ですかsetPreferredSize()
。を使用したり、 を使用setSize()
したりsetPreferredSize()
、一方を使用したり、もう一方を使用したりしました。
JFrame
s とsにはどの呼び出しを使用すればよいJPanel
ですか?
使用方法は、コンポーネントの親にレイアウト マネージャーがあるかどうかによって異なります。
setSize()
-- 親レイアウト マネージャーが存在しない場合に使用します。setPreferredSize()
(関連するsetMinimumSize
およびもsetMaximumSize
) -- 親レイアウト マネージャーが存在する場合に使用します。コンポーネントの親がレイアウト マネージャーを使用している場合、このsetSize()
メソッドはおそらく何もしません。これが通常影響を与える場所は、トップレベルJFrame
のコンポーネント ( およびJWindow
) と、スクロールされたペイン内にあるものです。setSize()
レイアウト マネージャーを使用せずに、親内にコンポーネントがある場合にも呼び出す必要があります。
一般に、setPreferredSize()
レイアウト マネージャーが存在する場合、期待どおりにコンポーネントをレイアウトします。ほとんどのレイアウト マネージャーは、コンポーネントの優先サイズ (および最小サイズと最大サイズ) を取得し、 と を使用setSize()
しsetLocation()
て、レイアウトのルールに従ってそれらのコンポーネントを配置します。
たとえば、BorderLayout
はその「北」領域の境界をその北コンポーネントの優先サイズに等しくしようとします。JFrame
のサイズ、他のコンポーネントのサイズに応じて、それらはそれより大きくなったり小さくなったりする可能性があります。レイアウトなどに。
setSize()
またはsetBounds()
、レイアウトマネージャーが使用されていないときに使用できます。
ただし、レイアウトマネージャーを使用している場合は、などのsetXXXSize()
方法を使用してレイアウトマネージャーにヒントを提供できます。setPreferredSize()
setMinimumSize()
また、コンポーネントのコンテナが、要求されたサイズを尊重するレイアウトマネージャーを使用していることを確認してください。FlowLayout
、、、GridBagLayout
およびマネージャーは、コンポーネントのSpringLayout
優先サイズ(設定した制約に応じて後者の2つ)を使用しますがBorderLayout
、GridLayout
通常は使用しません。既に表示されているコンポーネントに新しいサイズのヒントを指定する場合は、でrevalidateメソッドを呼び出す必要があります。包含階層が再度レイアウトされていることを確認します。次に、repaintメソッドを呼び出します。
setSize
コンポーネントのサイズを指定されたサイズに変更します。
setPreferredSize
希望のサイズを設定します。コンポーネントは、それが入っているコンテナのサイズによって、またはユーザーがコンポーネントのサイズを手動で変更した場合、実際にはこのサイズにならない場合があります。
ちゃんと覚えたら ...
setSize
コンポーネントのサイズを設定します。
setPreferredSize
優先サイズを設定します。Layoutmanager は、コンポーネントに十分なスペースを配置しようとします。
レイアウトマネージャーを使用しているかどうかによって異なります...