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

2025-08-05

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

1. JLabel(ラベル)

java-swing

基本機能

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

基本的な使い方

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);
        });
    }
}

主要メソッド

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

2. JButton(ボタン)

java-swing

基本機能

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

基本的な使い方

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);
        });
    }
}

主要メソッド

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

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

java-swing

基本機能

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

基本的な使い方

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);
        });
    }
}

主要メソッド

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

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

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を作成できるようになります。