S-JIS[2009-03-15/2009-05-05] 変更履歴

JLabel(Swing)

JLabelは、 文字列アイコンを表示する(表示するのみ)のコンポーネント。
1つのラベルで、文字列とアイコンを同時に1つずつ表示することも出来る。


表示する値の設定

表示する文字列やアイコンは、コンストラクターで指定する他、setText()setIcon()で指定する。[2009-03-16]

import javax.swing.JLabel;
		JLabel label = new JLabel("表示する文字列");
		JLabel licon = new JLabel(new ImageIcon("ファイル名"));

文字列には、<html>〜</html>タグでくくることにより、HTMLを指定することが出来る。[2009-03-16]
→SunのHow to Use HTML in Swing Components(英語)
(ラベルに限らず、ボタンとかツールチップとかタブとかでもそうなっているらしい)

これを使って改行したり、部分的に色を変えたり太字にしたり出来る。

		label.setText("<html>ラベルで<br>改行する例</html>");

表示位置指定

JLabelは、デフォルトでは左揃え。中央揃えや右揃えにするには以下のようにする。

		JLabel label = new JLabel("表示する文字列");
		label.setHorizontalAlignment(JLabel.CENTER);

文字列(テキスト)とアイコンを同時に表示する場合、文字列とアイコンの位置関係を指定することも出来る。[2009-03-16]

メソッド 説明 設定値 デフォルト
setHorizontalAlignment(位置) 水平(左右)の位置 LEFT・CENTER・RIGHT、LEADING・TRAILING テキストの場合はLEADING
アイコンの場合はCENTER
setVerticalAlignment(位置) 垂直(縦)の位置 TOP・CENTER・BOTTOM CENTER
setHorizontalTextPosition(位置) アイコンに対するテキストの水平位置 LEFT・CENTER・RIGHT、LEADING・TRAILING TRAILING
setVerticalTextPosition(位置) アイコンに対するテキストの垂直位置 TOP・CENTER・BOTTOM CENTER
setIconTextGap(int) アイコンとテキストの間隔 ピクセル 4

...

JLabelでは、表示用の最大幅より文字列の長さが長い場合、右の方が切れて「...」になる。[2009-05-05]

これは、BasicLabelUI#layoutCL()の中でSwingUtilities.layoutCompoundLabel()を呼び出し、そこで変換されている。
(文字列の実際の表示座標の算出もそこで行っている)


JLabelで前景色を付けるには普通にsetForeground()を呼び出せばよい。
しかし背景色はsetBackground()を呼び出すだけでは駄目。デフォルトでは背景は透明になっているから。

		JLabel label = new JLabel("表示する文字列");
		label.setOpaque(true);		// 背景を非透明にする
		label.setForeground(Color.RED);	// 前景色
		label.setBackground(Color.WHITE);	// 背景色

Swing目次へ戻る / Java目次へ戻る
メールの送信先:ひしだま