JavaでHTMLを使ってJLabelに複数行のテキストを表示する方法
SwingのJLabelは通常、単一行のテキストしか表示できませんが、HTMLタグを利用することで簡単に複数行のテキストを表示できます。ポイントは、ラベルのテキストを<html>タグで囲むことです。HTMLが有効になると、<br>タグによる改行や、<strong>などの書式設定も自由に使えるようになります。
複数行テキストの基本的な設定方法
JLabelにHTMLを設定して複数行のテキストを保持するには、次のように記述します。
JLabel label = new JLabel("<html><strong>Line1<br>Line2</strong></html>", JLabel.LEFT);このコードを実行すると、JLabelには以下のように2行のテキストが表示されます。
Line1 Line2
<br>タグが改行として機能し、1つのJLabel内で複数行を実現できています。また、第2引数のJLabel.LEFTでテキストを左揃えに指定しています。
サンプルコード
以下は、HTMLを使用して複数行のテキストを表示するJLabelを作成する完全な例です。
import java.awt.Font;
import javax.swing.*;
public class SwingDemo {
public static void main(String args[]) {
JFrame frame = new JFrame("Label Example");
JLabel label;
label = new JLabel("<html><strong>" + "Line1<br>Line2</strong></html>", JLabel.LEFT);
label.setBounds(100, 100, 100, 30);
label.setFont(new Font("Verdana", Font.PLAIN, 13));
frame.add(label);
frame.setSize(500, 300);
frame.setLayout(null);
frame.setVisible(true);
}
}コードの解説
- HTMLタグの埋め込み:
<html>タグで文字列を囲むことで、SwingコンポーネントのHTMLレンダリング機能が有効になります。 - 改行処理:
<br>タグを挿入することで、行間を自由に制御できます。 - フォント設定:
setFont()メソッドを使い、Verdanaフォント(サイズ13)を適用しています。 - 配置指定:
setBounds()でラベルの位置とサイズを設定し、setLayout(null)による絶対配置を採用しています。
実行結果
上記のプログラムを実行すると、ウィンドウ内に「Line1」と「Line2」が上下2行で表示されたラベルが確認できます。
まとめ
JLabelで複数行テキストを扱いたい場合は、HTMLタグを活用するのが最も手軽な方法です。<br>以外にも、色を変える<font color="red">や斜体の<i>など、さまざまなHTMLタグがSwingコンポーネントでサポートされているため、表現力豊かなUIを簡単に構築できます。
-
JavaでJLabelのテキストを回転させる方法をわかりやすく解説
JLabelはJComponentクラスのサブクラスであり、GUI上にテキストによる説明や情報を表示するためのコンポーネントです。JLabelは1行の読み取り専用テキスト、画像、あるいはテキストと画像の両方を表示できます。また、PropertyChangeListenerインターフェースを明示的に登録して、プロパティの変更を監視することも可能です。デフォルトでは、JLabelのテキストは水平方向に表示されます。しかし、paintComponent()メソッド内でGraphics2Dクラスのrotate()メソッドを実装することで、JLabelのテキストを自由な角度で回転させて表示できます。ro
-
JavaのJLabelで動くテキスト(スクロール表示)を実装する方法
JLabelとはJLabelはJComponentクラスのサブクラスであり、GUI上にテキストによる説明や情報を表示するための軽量コンポーネントです。JLabelは、1行の読み取り専用テキスト、画像、あるいはその両方を表示することができます。また、PropertyChangeListenerインターフェースを明示的に登録して、プロパティの変更を監視することも可能です。Timerクラスを使った移動テキストの仕組みJLabel内で動くテキスト(スクロール表示)を実装したい場合は、javax.swing.Timerクラスを利用します。Timerクラスのコンストラクタには、更新間隔を表す速度(ミリ秒単