JFrameの作成(ウィンドウの基本設定)

2025-08-05

Java Swingアプリケーションの基本となるウィンドウを作成するには、JFrameクラスを使用します。JFrameはSwingアプリケーションのメインウィンドウとして機能し、他のコンポーネントを配置するコンテナの役割を果たします。

JFrameの基本構造

基本的なJFrameの作成手順

  1. JFrameインスタンスの作成
  2. サイズの設定
  3. 閉じる操作の設定
  4. 可視化(表示)
import javax.swing.*;

public class BasicJFrameExample {
    public static void main(String[] args) {
        // イベントディスパッチスレッドでGUIを作成
        SwingUtilities.invokeLater(() -> {
            // JFrameインスタンス作成
            JFrame frame = new JFrame("私の最初のウィンドウ");

            // サイズ設定(幅, 高さ)
            frame.setSize(400, 300);

            // 閉じるボタンの動作設定
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // ウィンドウを表示
            frame.setVisible(true);
        });
    }
}

JFrameの主要メソッド

メソッド説明
setTitle(String title)ウィンドウのタイトルを設定
setSize(int width, int height)ウィンドウのサイズを設定(ピクセル単位)
setDefaultCloseOperation(int operation)閉じるボタンの動作を設定
setVisible(boolean visible)ウィンドウの表示/非表示を設定
setLocationRelativeTo(Component c)ウィンドウの位置を指定したコンポーネントの中央に配置
setResizable(boolean resizable)ウィンドウのサイズ変更可否を設定

setDefaultCloseOperationのオプション

定数説明
JFrame.EXIT_ON_CLOSEアプリケーションを終了(推奨)
JFrame.HIDE_ON_CLOSEウィンドウを非表示にする(デフォルト)
JFrame.DISPOSE_ON_CLOSEウィンドウを破棄する
JFrame.DO_NOTHING_ON_CLOSE何もしない(独自処理を実装可能)

ウィンドウを画面中央に表示する方法

// ウィンドウを画面中央に表示
frame.setLocationRelativeTo(null);

実践的なJFrameの例

import javax.swing.*;

public class PracticalJFrameExample {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("実践的なJFrame例");

            // 基本設定
            frame.setSize(500, 400);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null); // 画面中央に表示
            frame.setResizable(false); // サイズ変更不可

            // アイコン設定(任意)
            ImageIcon icon = new ImageIcon("icon.png");
            frame.setIconImage(icon.getImage());

            // コンテンツペインにコンポーネントを追加
            JLabel label = new JLabel("ようこそSwingの世界へ!", SwingConstants.CENTER);
            frame.add(label);

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

注意点

  1. スレッド安全性: Swingコンポーネントはイベントディスパッチスレッド(EDT)で作成・操作する必要があります。SwingUtilities.invokeLater()を使用することでこれを保証できます。
  2. コンテンツペイン: JFrameにはコンテンツを追加するための「コンテンツペイン」があり、frame.add()は実際にはこのコンテンツペインにコンポーネントを追加します。
  3. パック処理: コンポーネントを追加した後、frame.pack()を呼び出すと、コンポーネントに合わせて適切なサイズに自動調整されます。
// コンポーネント追加後にpack()を呼び出す例
frame.add(someComponent);
frame.pack(); // コンポーネントに合わせてサイズ調整

次の章では、このJFrameに基本的なコンポーネント(JLabelJButtonJTextFieldなど)を追加する方法を学びます。