Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで編集可能なJLabelを実装する方法

JLabelとは

JLabelクラスはJComponentクラスを継承しており、JLabelのオブジェクトを使用することで、GUI上にテキストによる説明や情報を表示できます。

JLabelの主な特徴は以下のとおりです。

  • 1行の読み取り専用テキスト画像、またはその両方を表示できる
  • 重要なメソッドとして、setText()setIcon()setBackground()setOpaque()setHorizontalAlignment()setVerticalAlignment()などが用意されている
  • PropertyChangeListenerインターフェースを明示的に登録して、プロパティの変更を監視できる

JLabel自体は編集不可のコンポーネントですが、CardLayoutJTextFieldを組み合わせることで、クリック時にテキストフィールドへ切り替わる「編集可能なラベル」を実現できます。以下にその実装例を示します。

実装例

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で編集可能なJLabelを実装する方法

  1. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー

  2. JavaのJWindowを使ってスプラッシュ画面を実装する方法

    JWindowは、デスクトップ上の任意の位置に表示できるコンテナです。JFrameと異なり、タイトルバーやウィンドウ管理ボタンなどの装飾要素を持ちません。JWindowは、唯一の子クラスとしてJRootPaneを含んでいます。そのcontentPaneが、JWindowに追加される子コンポーネントの親となります。JFrameと同様に、JWindowもトップレベルコンテナの一つであり、「装飾のない(undecorated)JFrame」と考えることができます。タイトルバーやウィンドウメニューといった機能は備えていません。この特性を活かすと、JWindowはスプラッシュ画面として利用できます。アプ