ラベルのサイズの設定と枠線の表示
ラベルのサイズは通常表示される文字列の大きさに調整されますが、任意のサイズに設定することができます。またラベルには枠線を設定することもできます。ここではラベルのサイズを設定する方法、およびラベルに枠線を表示する方法について解説します。
(Last modified: )
ラベルのサイズを設定する
ラベルのサイズを設定するには JLabel クラスの親クラスである JComponent クラスで用意されている setPreferredSize メソッドを使います。
public void setPreferredSize(Dimension preferredSize)
このコンポーネントの適切なサイズを設定します。 preferredSizeがnullの場合、UIで適切なサイズを要求します。
パラメータ:
preferredSize - 新しい推奨サイズ、またはnull
引数にはサイズを表す Dimension クラスのオブジェクトを指定します。( Dimension クラスの詳細は「Dimensionクラス」を参照して下さい)。
実際の使い方は次のようになります。
JLabel label = new JLabel("MyLabel"); label.setPreferredSize(new Dimension(200, 100));
コンポーネントでサイズを設定する場合、使用しているレイアウトマネージャーによってはコンポーネントに設定したサイズは無視される場合がありますのでご注意ください。例えばレイアウトマネージャーとして BorderLayout を使用している場合はコンポーネントに設定されたサイズは無視されます。
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 Sample.java という名前で保存します。
import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import java.awt.Color; import java.awt.BorderLayout; import java.awt.Dimension; class Sample extends JFrame{ public static void main(String args[]){ Sample frame = new Sample("MyTitle"); frame.setVisible(true); } Sample(String title){ setTitle(title); setBounds(100, 100, 728, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label1 = new JLabel("Hello!"); label1.setOpaque(true); label1.setBackground(Color.YELLOW); JLabel label2 = new JLabel("Good!"); label2.setOpaque(true); label2.setBackground(Color.GREEN); label2.setPreferredSize(new Dimension(100, 100)); JLabel label3 = new JLabel("Bye!"); label3.setOpaque(true); label3.setBackground(Color.RED); label3.setPreferredSize(new Dimension(200, 200)); JPanel p = new JPanel(); p.add(label1); p.add(label2); p.add(label3); add(p, BorderLayout.CENTER); } }
次のようにコンパイルを行います。
javac Sample.java
コンパイルが終わりましたら実行します。
java Sample
ラベルを 3 つ作成し、最初のラベルはサイズを設定せず、 2 番目と 3 番目のラベルにはサイズを設定しています。サイズが設定されたことが分かりやすいようにラベルには背景色を設定しています。またレイアウトマネージャーによってサイズが変更されないように、サイズに影響を与えない FlowLayout がデフォルトで設定されている JPanel にラベルを追加しています。
1 番目のラベルのようにサイズを設定していないラベルのサイズは表示している文字列のサイズに自動的に設定されています。 2 番目と 3 番目のラベルは設定したサイズに設定されています。
ラベルに枠線を表示する
ラベルに枠線を設定するには JLabel クラスの親クラスである JComponent クラスで用意されている setBorder メソッドを使います。
public void setBorder(Border border)
このコンポーネントのボーダーを設定します。 Borderオブジェクトは、コンポーネントのイン・セットを定義し(コンポーネントで直接設定されているイン・セットをオーバーライドする)、任意でそれらのイン・セットの境界内のボーダー装飾をレンダリングします。Swingコンポーネントで装飾領域および非装飾領域(マージンおよびパディングなど)の両方を生成するには、イン・セットではなくボーダーを使用する必要があります。単一のコンポーネント内で複数のボーダーを入れ子にするには、複合ボーダーを使用できます。
技術的にはJComponentを継承するどのオブジェクトにもボーダーを設定できますが、標準のSwingコンポーネントのルック・アンド・フィールの実装の多くは、ユーザー設定のボーダーでは正しく動作しません。 通常、JPanelまたはJLabel以外の標準のSwingコンポーネントでボーダーを設定するときは、コンポーネントをJPanelに入れて、JPanelでボーダーを設定することをお勧めします。
これはバウンド・プロパティです。
パラメータ:
border - このコンポーネントでレンダリングされるボーダー
引数には枠線を表す Border インターフェースを実装したクラスのオブジェクトを指定します。( Border インターフェースの詳細は「Border」を参照して下さい)。
実際の使い方は次のようになります。
JLabel label = new JLabel("MyLabel"); LineBorder border = new LineBorder(Color.RED, 2, true); label.setBorder(border);
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 Sample.java という名前で保存します。
import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.border.LineBorder; import java.awt.Color; import java.awt.BorderLayout; import java.awt.Dimension; class Sample extends JFrame{ public static void main(String args[]){ Sample frame = new Sample("MyTitle"); frame.setVisible(true); } Sample(String title){ setTitle(title); setBounds(100, 100, 728, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label1 = new JLabel("Hello!"); label1.setBorder(new LineBorder(Color.BLUE, 2, false)); JLabel label2 = new JLabel("Bye!"); label2.setPreferredSize(new Dimension(200, 200)); label2.setBorder(new LineBorder(Color.RED, 8, true)); JPanel p = new JPanel(); p.add(label1); p.add(label2); add(p, BorderLayout.CENTER); } }
次のようにコンパイルを行います。
javac Sample.java
コンパイルが終わりましたら実行します。
java Sample
2 つラベルを作成しそれぞれ枠線を表示しています。
-- --
ラベルのサイズを設定する方法、およびラベルに枠線を表示する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。