Skip to content
Code Blue プログラミング学習ノート
Java/Swing

基本的なコンポーネントの使い方(JLabel, JButton, JTextField)

はじめに

Swingアプリケーションを構築する上で欠かせない基本的なコンポーネントの使い方を学びましょう。これらのコンポーネントを組み合わせることで、対話型のGUIアプリケーションを作成できます。まずは前回のJFrameと学習するコンポーネントの位置付けを確認します。

1. JLabel(ラベル)

java-swing

基本機能

  • テキストやアイコンを表示する非編集可能なコンポーネント
  • 他のコンポーネントの説明ラベルとしてよく使用される

基本的な使い方

以下はSwingを使ってラベル(JLabel)を表示する基本的なGUIアプリケーションです。SwingUtilities.invokeLater()を利用してGUIを安全に作成し、JFrameでウィンドウを用意しています。

import javax.swing.*;

public class LabelExample {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JLabelの例");
            frame.setSize(300, 200);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // JLabelの作成
            JLabel label = new JLabel("これはラベルです");

            // ラベルの配置(中央揃え)
            label.setHorizontalAlignment(SwingConstants.CENTER);

            frame.add(label);
            frame.setVisible(true);
        });
    }
}

JLabelに「これはラベルです」という文字列を設定し、setHorizontalAlignment()で文字を中央揃えにしています。最後にラベルをフレームへ追加し、setVisible(true)を呼び出すことで、ラベルが中央に表示されたウィンドウが画面に表示されます。

主要メソッド

メソッド説明
setText(String text)表示するテキストを設定
setIcon(Icon icon)表示するアイコンを設定
setHorizontalAlignment(int alignment)水平方向の配置を設定

2. JButton(ボタン)

java-swing

基本機能

  • クリック可能なボタンコンポーネント
  • ユーザーの操作を受け付ける基本的なインターフェース

基本的な使い方

下のプログラムは、Swingを使ってボタン(JButton)を表示し、クリック時の処理を実装する基本的なGUIアプリケーションです。JFrameにボタンを配置し、addActionListener()でクリック時のイベントを登録しています。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ButtonExample {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JButtonの例");
            frame.setSize(300, 200);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new java.awt.FlowLayout());

            // JButtonの作成
            JButton button = new JButton("クリックしてください");

            // ボタンにアクションリスナーを追加
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    JOptionPane.showMessageDialog(frame, "ボタンがクリックされました!");
                }
            });

            frame.add(button);
            frame.setVisible(true);
        });
    }
}

ボタンが押されるとactionPerformed()が実行され、JOptionPane.showMessageDialog()によって「ボタンがクリックされました!」というメッセージダイアログが表示されます。イベント処理の基本的な流れを学ぶことができるサンプルです。

主要メソッド

メソッド説明
addActionListener(ActionListener l)クリックイベントのリスナーを追加
setEnabled(boolean enabled)ボタンの有効/無効を設定
setText(String text)ボタンに表示するテキストを設定

3. JTextField(テキストフィールド)

java-swing

基本機能

  • 1行のテキスト入力が可能なコンポーネント
  • ユーザーからのテキスト入力を受け付ける

基本的な使い方

以下のプログラムは、Swingを使ってテキスト入力欄(JTextField)を作成し、入力した文字列を取得する方法を学ぶサンプルです。JTextFieldを20文字分の幅で配置し、「送信」ボタンを押すとgetText()で入力内容を取得します。

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class TextFieldExample {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("JTextFieldの例");
            frame.setSize(300, 200);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new java.awt.FlowLayout());

            // JTextFieldの作成(20文字分の幅)
            JTextField textField = new JTextField(20);

            JButton button = new JButton("送信");
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String inputText = textField.getText();
                    JOptionPane.showMessageDialog(frame, "入力されたテキスト: " + inputText);
                }
            });

            frame.add(textField);
            frame.add(button);
            frame.setVisible(true);
        });
    }
}

取得した文字列はJOptionPane.showMessageDialog()を使ってダイアログに表示されます。GUIでユーザーから文字列を受け取り、その内容を利用する基本的なイベント処理の流れを確認できます。

主要メソッド

メソッド説明
getText()入力されたテキストを取得
setText(String text)テキストを設定
setEditable(boolean editable)編集可能かどうかを設定

コンポーネントを組み合わせた実践例

以下のプログラムは、JLabel、JTextField、JButtonを組み合わせたGUIアプリケーションです。ラベルで入力内容を案内し、テキストフィールドに名前を入力します。

「送信」ボタンをクリックすると、入力された文字列を取得し、名前が入力されていれば挨拶メッセージを表示します。入力が空の場合はエラーメッセージを表示します。複数のSwingコンポーネントを連携させ、入力内容に応じて処理を分岐する基本的なイベント処理を学ぶことができます。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class CombinedComponentsExample {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("コンポーネント組み合わせ例");
            frame.setSize(400, 300);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLayout(new FlowLayout());

            // ラベル
            JLabel label = new JLabel("名前を入力してください:");

            // テキストフィールド
            JTextField textField = new JTextField(20);

            // ボタン
            JButton button = new JButton("送信");
            button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    String name = textField.getText();
                    if (!name.isEmpty()) {
                        JOptionPane.showMessageDialog(frame, 
                            "こんにちは、" + name + "さん!",
                            "挨拶",
                            JOptionPane.INFORMATION_MESSAGE);
                    } else {
                        JOptionPane.showMessageDialog(frame, 
                            "名前を入力してください",
                            "エラー",
                            JOptionPane.ERROR_MESSAGE);
                    }
                }
            });

            // コンポーネントをフレームに追加
            frame.add(label);
            frame.add(textField);
            frame.add(button);

            frame.setVisible(true);
        });
    }
}

コンポーネントのカスタマイズ

各コンポーネントは以下のようにカスタマイズできます。

// フォントの設定
label.setFont(new Font("MS Gothic", Font.BOLD, 16));

// 前景色(文字色)の設定
button.setForeground(Color.WHITE);

// 背景色の設定
button.setBackground(Color.BLUE);

// ツールチップの設定
textField.setToolTipText("ここに名前を入力してください");

次の章では、これらのコンポーネントを適切に配置するための「レイアウトマネージャーの基礎」について学びます。コンポーネントを効果的に配置することで、より使いやすいGUIを作成できるようになります。