ラベル


テキスト表現

Swing のラベルは、テキストを表示するだけのコンポーネントだけではなく
アイコンなどを用いた高度な表現力を持ったラベルです

Swing のラベルは javax.swing.JLabel で実装されます
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JLabel

public class JLabel extends JComponent
	implements SwingConstants, Accessible
このクラスは、次のようなコンストラクタを公開しています

public JLabel()
public JLabel(Icon image)
public JLabel(Icon image , int horizontalAlignment)
public JLabel(String text)
public JLabel(String text , int horizontalAlignment)
public JLabel(String text , Icon icon , int horizontalAlignment)

image にはラベル・コンポーネントが使用するアイコンを
horizontalAlignment は SwingConstants で定義されている定数のうち
LEFT、CENTER、RIGHT、LEADING、または TRAILING のうちのいずれかを指定します
text は、ラベルに表示するテキストを指定します

Swing コンポーネントは、配置や方向指定を行うために定数を用います
この定数は javax.swing.SwingConstants インターフェイスで定義されています

public interface SwingConstants

このインターフェイスは、位置情報を指定するための定数のみを保有しています
このインターフェイスが定義する定数フィールドは次のようなものがあります

定数フィールド解説
BOTTOM ボックスの下端を指定するために使用するボックス配置定数です
CENTER 領域内の中央位置です
EAST 東 (右) の方角です
HORIZONTAL 水平方向です
LEADING 左から右に記述する言語および右から左に記述する言語で
使用するテキストのリーディングエッジを指定します
LEFT ボックスの左端を指定するために使用するボックス配置定数です
NEXT シーケンス内の次の方向を指定します
NORTH 北 (上) の方角です
NORTH_EAST 北東 (右上) の方角です
NORTH_WEST 北西 (左上) の方角です
PREVIOUS シーケンス内の前の方向を指定します
RIGHT ボックスの右端を指定するために使用するボックス配置定数です
SOUTH 南 (下) の方角です
SOUTH_EAST 南東 (右下) の方角です
SOUTH_WEST 南西 (左下) の方角です
TOP ボックスの上端を指定するために使用するボックス配置定数です
TRAILING 左から右に記述する言語および右から左に記述する言語で
使用するテキストのトレーリングエッジを指定します
VERTICAL 垂直方向です
WEST 西 (左) の方角です

Swing コンポーネントの位置情報は、これらを使って指定することができます
例えば、ラベルのアイコンやテキストを中央揃えにしたい場合は CENTER を渡すと良いでしょう
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet {
	public void init() {
		Icon icon = new ImageIcon("icon.jpg");
		JLabel label = new JLabel(
			"Kitty on your lap" , icon , SwingConstants.CENTER);
		getContentPane().add(label);
	}
}


このプログラムは、アイコン付きのラベルを表示しています
ラベルが持つプロパティ情報は、メソッドを介して設定/取得することができます

アイコンは JLabel.setIcon() メソッドで設定し
JLabel.getIcon() メソッドを用いて取得することができます

public void setIcon(Icon icon)
public Icon getIcon()

icon には、新しく設定するアイコンを指定します
テキストを設定するには JLabel.setText() を
取得するには JLabel.getText() メソッドを用います

public void setText(String text)
public String getText()

text には、表示する新しいテキストを指定します

さらに、コンストラクタでは設定しきれないような細かい位置情報も
メソッドを用いて指定することができます
ラベルの内容の X 軸の位置は JLabel.HorizontalAlignment() を
Y 軸の位置は JLabel.setVerticalAlignment() メソッドを使います
もちろん、これらの情報を取得する get〜() メソッドも存在します

public void setHorizontalAlignment(int alignment)
public void setVerticalAlignment(int alignment)
public int getHorizontalAlignment()
public int getVerticalAlignment()

alignment には、位置情報を示す SwingConstants の定数を指定します
X 軸に対しては、LEFT、CENTER、RIGHT、LEADING、または TRAILING のうちの 1 つ
Y 軸に対しては、TOP、CENTER、または BOTTOM のうちの 1 を指定することができます
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet {
	public void init() {
		JLabel label = new JLabel(new ImageIcon("icon.jpg"));

		label.setText("Kitty on your lap");
		label.setHorizontalAlignment(SwingConstants.RIGHT);
		label.setVerticalAlignment(SwingConstants.BOTTOM);
		getContentPane().add(label);
	}
}


このプログラムは、アイコンだけを設定しているラベルのインスタンスを生成し
その後、メソッドからテキストや位置情報を指定しています


状態とアイコン

コンポーネントは、有効/無効を表すプロパティを保有しています
Swing の無効状態のコンポーネントには、入力を行うことはできません
これを指定するには JComponent.setEnabled() メソッドを使い
状態を取得するには AWT の Component.isEnabled() メソッドを使います

Swing コンポーネントは JComponent が AWT の setEnabled() をオーバーライドしています
重量コンポーネントの違いとして、無効状態でも MouseEvent を受け取ってしまうことと
親が無効になっても、子コンポーネントは無効にはならないので注意が必要です

public void setEnabled(boolean enabled)

enabled には有効/無効状態を示す論理地を指定します
やはり、Swing も無効状態になると文字を灰色にするなど、見た目に変化を与えます
デフォルトでは、無効状態になるとアイコンと文字をグレーで表示します

しかし、Swing はこれで終わらず、無効状態のアイコンを指定できます
これは JLabel.setDisabledIcon() メソッドで指定できます
無効状態のアイコンを得るには JLabel.getDisabledIcon() を用います

public void setDisabledIcon(Icon disabledIcon)
public Icon getDisabledIcon()

disabledIcon には、無効状態のアイコンを指定します
getDisabledIcon は、無効状態アイコンが設定されておらず
かつ通常のアイコンが ImageIcon で設定されている場合は
アイコンの「グレー表示」バージョンを計算して、無効状態アイコンを返します
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends JApplet implements MouseListener , SwingConstants {
	JLabel label1;
	public void init() {
		label1 = new JLabel("Kitty on your lap" , CENTER);
		label1.setIcon(new ImageIcon("icon1.jpg"));
		label1.setDisabledIcon(new ImageIcon("icon2.jpg"));
		label1.addMouseListener(this);
		getContentPane().add(label1);
	}

	public void mouseClicked(MouseEvent e) {
		label1.setEnabled(!label1.isEnabled());
	}
	public void mouseEntered(MouseEvent e) {}
	public void mouseExited(MouseEvent e) {}
	public void mousePressed(MouseEvent e) {}
	public void mouseReleased(MouseEvent e) {}
}


上の図の、左は無効状態のラベル、右が有効状態のラベルです
このプログラムは、ラベルが無効状態になると自動的にアイコンが切り替わります



前のページへ戻る次のページへ