SwingのJFrameでコンテントペインをカスタマイズしラベルを表示する方法

Java Swingでウィンドウを構築する際の土台となるのがJFrameです。JFrameはトップレベルコンテナであり、デフォルトで内部にコンテントペインという領域を持っています。このコンテントペインは getContentPane() で取得でき、直接背景色を変えたり、setContentPane() で別の JPanel に置き換えたりできます。JPanelはコンポーネントをまとめる中間コンテナ、JLabel はテキストや画像を表示する基本的な部品です。

以下では、JFrameのコンテントペインをカスタムパネルに置き換える例と、ラベルを配置して表示する例を紹介します。コード内の変数名や流れを変更しているため、元の単純なサンプルとは異なる構造で動作を確認できます。

サンプル1: カスタムパネルをコンテントペインに設定する

下記のクラス FrameWithCustomPane は JFrame を継承し、コンストラクタ内で新しい JPanel を生成して背景色を設定し、それをコンテントペインとして適用します。さらに、ウィンドウを画面中央に配置しています。

import javax.swing.*;
import java.awt.*;

public class FrameWithCustomPane extends JFrame {
    public FrameWithCustomPane(String title) {
        super(title);
        // デフォルトのコンテントペインを新しいJPanelで置き換える
        JPanel mainPanel = new JPanel();
        mainPanel.setBackground(Color.GREEN);
        setContentPane(mainPanel);

        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null); // 画面中央へ
        setVisible(true);
    }

    public static void main(String[] args) {
        // インスタンスを生成するだけでウィンドウが表示される
        new FrameWithCustomPane("カスタムペインのJFrame");
    }
}

サンプル2: JLabelを配置したシンプルなウィンドウ

次の例では、LabelDisplayDemo クラスが JFrame を作成し、コンテントペインを取得して背景色を塗り、中央揃えの JLabel を追加します。ラベルは BorderLayout.CENTER を指定して領域全体に配置しています。

import javax.swing.*;
import java.awt.*;

public class LabelDisplayDemo {
    public void showWindow() {
        JFrame frame = new JFrame("ラベル表示");
        Container content = frame.getContentPane();
        content.setBackground(Color.CYAN);

        JLabel greetingLabel = new JLabel("Swingを楽しもう");
        greetingLabel.setHorizontalAlignment(JLabel.CENTER);
        content.add(greetingLabel, BorderLayout.CENTER);

        frame.setSize(400, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        new LabelDisplayDemo().showWindow();
    }
}

これらの例のように、JFrame単体ではなく、コンテントペインや追加パネル、ラベルコンポーネントの組み合わせ方を理解することで、柔軟なGUIを組み立てられます。

タグ: Swing JFrame JLabel ContentPane Java GUI

9月18日 08:18 投稿