主な違いは何であるsetSize()
とはsetPreferredSize()
。時々私はsetSize()
、時々、時々setPreferredSize()
、私がしたいことをする時もあれば、他の時も使う。
JFrame
sとJPanel
s にはどの呼び出しを使用すればよいですか?
主な違いは何であるsetSize()
とはsetPreferredSize()
。時々私はsetSize()
、時々、時々setPreferredSize()
、私がしたいことをする時もあれば、他の時も使う。
JFrame
sとJPanel
s にはどの呼び出しを使用すればよいですか?
回答:
使用法は、コンポーネントの親にレイアウトマネージャがあるかどうかによって異なります。
setSize()
-親レイアウトマネージャーが存在しない場合に使用します。setPreferredSize()
(また、その関連setMinimumSize
およびsetMaximumSize
)-親レイアウトマネージャーが存在する場合に使用します。setSize()
コンポーネントの親がレイアウトマネージャを使用している場合、このメソッドはおそらく何もしません。これが通常効果を発揮する場所は、トップレベルのコンポーネント(JFrame
sとJWindow
s)とスクロールされたペインの内部にあるものです。setSize()
レイアウトマネージャーなしで親の内部にコンポーネントがある場合も呼び出す必要があります。
通常、setPreferredSize()
レイアウトマネージャーが存在する場合、コンポーネントは期待どおりにレイアウトされます。ほとんどのレイアウトマネージャーは、コンポーネントの推奨サイズ(および最小サイズと最大サイズ)を取得し、レイアウトのルールに従ってそれらのコンポーネントを使用setSize()
しsetLocation()
て配置することで機能します。
たとえば、BorderLayout
は、「北」領域の境界をその北コンポーネントの推奨サイズに等しくしようとします---のサイズに応じてJFrame
、他のコンポーネントのサイズに応じて、それよりも大きくなったり小さくなったりします。レイアウトなど。
setSize()
またはsetBounds()
、レイアウトマネージャーが使用されていないときに使用できます。
ただし、レイアウトマネージャーを使用してsetXXXSize()
いる場合はsetPreferredSize()
、setMinimumSize()
などのメソッドを使用してレイアウトマネージャーにヒントを提供できます。
また、コンポーネントのコンテナが、要求されたサイズを尊重するレイアウトマネージャを使用していることを確認してください。FlowLayout
、GridBagLayout
、およびSpringLayout
管理者は、(あなたが設定された制約に応じて、後者の2)コンポーネントの推奨サイズを使用しますが、BorderLayout
とGridLayout
あなたはすでに目に見えるのコンポーネントの新しいサイズヒントを指定する通常don't.If、あなたは上の再検証メソッドを呼び出す必要がその包含階層が再びレイアウトされることを確認します。次に、repaintメソッドを呼び出します。
setSize
コンポーネントのサイズを指定したサイズに変更します。
setPreferredSize
推奨サイズを設定します。コンポーネントは、それが入っているコンテナーのサイズ、またはユーザーがコンポーネントのサイズを手動で変更した場合、実際にはこのサイズにならない場合があります。
ちゃんと覚えたら ...
setSize
コンポーネントのサイズを設定します。
setPreferredSize
推奨サイズを設定します。Layoutmanagerは、コンポーネント用にそのスペースを配置しようとします。
レイアウトマネージャーを使用しているかどうかによって異なります...