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を組み立てられます。