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); // 背景色