コンテナ内にコンポーネントを配置する |
問題: コンポーネントの実寸はどのように指定するのか?
- まず、そのコンポーネントの実寸を設定することが本当に必要かどうかを考える。 標準のコンポーネントは、実行されているプラットフォームと使用中のフォントによってサイズが変わるため、通常はコンポーネント実寸を指定しても無意味である 。
一方、固定サイズのコンテンツ (イメージなど) をもつ特製のコンポーネントでは、実寸を指定する意味がある。特製のコンポーネントに対しては、コンポーネントの正しいサイズを返すように Component の
minimumSize()
とpreferredSize()
メソッドを上書きする必要がある。すでに表示されているコンポーネントのサイズを変更するときは、次の項目を参照する。
注: コンポーネントのサイズはすべて、レイアウトマネージャの管理下にある。 FlowLayout と GridBagLayout レイアウトマネージャはコンポーネントの普通のサイズを使用する (GridBagLayout の方はユーザが設定する制約に依存する) が、 BorderLayout と GridLayout は通常、普通のサイズを使用しない。 ほかのオプションとしては、特製のレイアウトマネージャを作成するか見つけること 、または絶対的な位置決めを使用することがある。
問題: コンポーネントのサイズはどのように変更するのか?
- コンポーネントが表示された後は、Component の
resize()
メソッドを使用してサイズを変更することができる。その後、そのコンポーネントのコンテナが再配置されるように、そのコンテナに対してvalidate()
メソッドを呼び出す必要がある。問題: 私の作った特製のコンポーネントは小さくなりすぎる。
- そのコンポーネントは
preferredSize()
とminimumSize()
メソッドを実装しているか? そうだとすれば、正しい値を返しているか?
- できるだけ多くのスペースを使用するレイアウトマネージャを使用しているか? レイアウトマネージャの選び方と、特定のコンポーネントに最大限のスペースを使うようレイアウトマネージャに指示する方法については、レイアウトマネージャを使用するときの一般的なルールにいくつかヒントが記載されている。
読者の抱える問題がこのリストに記載されていない場合は、コンポーネントに関して起こりやすい問題 を参照する。
コンテナ内にコンポーネントを配置する |