第1回では、JFrameを使ってウィンドウを表示するまでの手順を紹介しました。今回は、ボタンやラベルといったGUIコンポーネントを紹介するとともに、それらをJFrameに配置する方法を紹介しましょう。
実際にコンポーネントを配置する前に、Swingコンポーネントの種類について説明しておきます。Swingコンポーネントは以下の3つの階層に分類することができます。
Swingでは、この3つの階層のコンポーネントを組み合わせてアプリケーションを作成していきます。JLabelなどのコントロールを持ったアプリケーションを作成するには、まずトップレベルコンテナを作成し、そこに中間コンテナを配置し、さらに中間コンテナにコントロールを配置するといった手順を踏む必要があります。それでは、実際にラベルやボタンをフレームに配置してみましょう。
前回は、図1のようなウィンドウを作成しました。このウィンドウにラベルとボタンを配置してみましょう。
今回用に「SwingChapter02」という名前のプロジェクトを作成します(プロジェクトの作成方法は第1回を参考にしてください)。
GUIアプリケーションの起動および各コンポーネントの作成を担当するクラス「SwingAppMain」を作成します。以下の手順で作業を行ってください。
1.メニュー[ファイル]→[新規]→[クラス]を選択し、[新規Javaクラス]ダイアログを開き、以下の作業を行う。[終了]を押下してソースファイルを作成する。
2.ソースに以下のクラスのインポートを追加する。
3.[JFrame]クラスのインスタンス(mainFrame)を生成し初期設定を行う(詳細は第1回クラスの作成を参照してください)。
4.mainFrameのContentPaneを取得するcontentPane。
5.[JLabel]クラスのインスタンス(label)を生成する。
6.[JButton]クラスのインスタンス(button)を生成する。
7.contentPaneにlabelを追加する。
8.contentPaneにbuttonを追加する。
9.ウィンドウを表示する。
以上の手順で、以下のソースコードが作成されます。
package swing.sample; import java.awt.BorderLayout; import java.awt.Container; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class SwingAppMain { /** * @param args */ public static void main(String[] args) { JFrame mainFrame = new JFrame("サンプル"); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setSize(320,160); mainFrame.setLocationRelativeTo(null); // JFrameよりContentPaneを取得 Container contentPane = mainFrame.getContentPane(); // ラベルのインスタンスを生成 JLabel label = new JLabel("SwingLabel"); // ボタンのインスタンスを生成 JButton button = new JButton("SwingButton"); // ラベルをContentPaneに配置 contentPane.add(label, BorderLayout.CENTER); // ボタンをContentPaneに配置 contentPane.add(button, BorderLayout.SOUTH); mainFrame.setVisible(true); } }
作成したコードを実行してみましょう。メニュー[実行]→[Javaアプリケーション]を選択します。
ラベルとボタンが配置されたウィンドウが表示されました。このように、「ラベル、ボタンのインスタンスを生成し、コンテナに追加する」という簡潔なコードを記述することでコンポーネントの配置を実現できます。感覚的にも理解しやすいですね。
Copyright © ITmedia, Inc. All Rights Reserved.