Javaで編集可能なJLabelを実装する方法
JLabelとは
JLabelクラスはJComponentクラスを継承しており、JLabelのオブジェクトを使用することで、GUI上にテキストによる説明や情報を表示できます。
JLabelの主な特徴は以下のとおりです。
- 1行の読み取り専用テキスト、画像、またはその両方を表示できる
- 重要なメソッドとして、setText()、setIcon()、setBackground()、setOpaque()、setHorizontalAlignment()、setVerticalAlignment()などが用意されている
- PropertyChangeListenerインターフェースを明示的に登録して、プロパティの変更を監視できる
JLabel自体は編集不可のコンポーネントですが、CardLayoutとJTextFieldを組み合わせることで、クリック時にテキストフィールドへ切り替わる「編集可能なラベル」を実現できます。以下にその実装例を示します。
実装例
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
public class JEditableLabel extends JFrame {
public JEditableLabel() {
setTitle("JEditableLabel");
setLayout(new FlowLayout());
final JLabel label = new JLabel(" Welcome to Tutorials Point");
final JTextField textfield = new JTextField();
final CardLayout cl = new CardLayout();
final JPanel panel = new JPanel(cl);
panel.add(label, "label component");
panel.add(textfield, "textfield component");
add(panel);
label.addMouseListener(new MouseAdapter() {
public final void mouseEntered(MouseEvent evt) {
textfield.setText(label.getText());
cl.show(panel, "textfield component");
}
});
textfield.addMouseListener(new MouseAdapter() {
public final void mouseExited(MouseEvent evt) {
label.setText(textfield.getText());
cl.show(panel, "label component");
}
});
setSize(375, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new JEditableLabel();
}
}コードのポイント
- CardLayoutを使って、JLabelとJTextFieldを同じパネル上で切り替えています。
- ラベルにマウスカーソルが乗ったとき(mouseEntered)、ラベルのテキストをテキストフィールドにコピーし、表示をテキストフィールド側に切り替えます。
- マウスカーソルがテキストフィールドから離れたとき(mouseExited)、入力されたテキストをラベルに反映し、表示をラベル側へ戻します。
実行結果
プログラムを実行すると、ウィンドウ上に「Welcome to Tutorials Point」というラベルが表示されます。マウスカーソルをラベルに合わせるとテキストフィールドに切り替わり、テキストを編集できるようになります。カーソルを外すと、編集内容がラベルに反映されて元の表示に戻ります。

-
JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説
JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー
-
JavaのJWindowを使ってスプラッシュ画面を実装する方法
JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ