ウインドウに任意のテキストを表示する(Java Swing)
Ⅰ.きっかけ
Javaの基本的な勉強を終えて、これから様々なアプリケーションを作っていきたいと考えています。その際に、何かの処理を実行した結果をGUIで表現できると面白いだろうなと思い、ウインドウを表示する方法を調べました。
Ⅱ.Swing(スウィング)とは1
- ウィンドウ、ボタン、メニューやアイコンなどを使ったユーザーインターフェイス(操作画面)を提供するアプリケーションのことを「GUIアプリケーション」と呼ぶ
- そのGUIアプリケーションを作るためのJavaのクラスライブラリ(クラス、インターフェイス群)の一つが「Swing」である
Ⅲ.大まかな作業の流れ
(1)トップレベルコンテナを作成
(2)中間コンテナを配置
(3)中間コンテナにコントロールを配置
Ⅳ.詳しい手順
1.ウインドウクラスを作成
(1)import文の記述
- 必要となるパッケージ内のクラスをまとめてimportする2
import java.awt.*; import javax.swing.*;
(2)JFrameクラスの継承
- javax.swingパッケージにある JFrameクラスを継承してウインドウのクラスを作る
public class クラス名 extends JFrame{ //ここに(3)以下の内容を記述していく }
(3)コンストラクタの作成
- ウインドウの初期設定を行う
public クラス名(){ //ウインドウのタイトルバーに表示するテキストを設定 this.setTitle(String title); //ウインドウの大きさを設定 this.setSize(int width,int height); //ウインドウのクローズボックス(×印)をクリックしたときの動作を設定 //プログラムを終了する場合、引数に「変数名.EXIT_ON_CLOSE」を指定する this.setDefaultCloseOperation(int operation); //ウィンドウの表示場所を設定 //ウインドウを画面の中央に配置する場合、引数に「null」を指定する this.setLocationRelativeTo(Component c); }
2.ウインドウにテキストを配置
(1)ウインドウクラスのインスタンスの作成
- 1で作成したウインドウクラスのインスタンスを作成する
クラス名 変数f = new クラス名();
(2)ウインドウの表示領域の取得
- JFrameの表示領域であるContentPaneを取得する
Container 変数c = 変数f.getContentPane();
(3)パネルのインスタンスの生成
- javax.swingパッケージにあるJPanelクラスのインスタンスを生成する
JPanel 変数p = new JPanel();
(4)ラベルのインスタンスの生成
- javax.swingパッケージにあるJLabelクラスのインスタンスを生成する
- 引数にはウインドウで表示するテキストを指定する
JLabel 変数l = new JLabel(String text);
- フォントのサイズと色は以下で設定する
変数l.setFont(new Font("[フォント]", Font.PLAIN, [フォントサイズ])); 変数l.setForeground(Color.[色]);
(5)ラベルをパネルに配置
- 引数には、組み込むJLabelインスタンスを指定する
変数p.add(変数l);
(6)パネルをウインドウの表示領域に配置
変数c.add(変数p, BorderLayout.CENTER);
3.ウインドウを表示
- 引数に「true」を指定する
変数f.setVisible(boolean b);
Ⅴ.実際のソースコード
//1 ウインドウクラスの作成 //(1) import文の記述 import javax.swing.*; import java.awt.*; //(2) JFrameクラスの継承 public class Sample extends JFrame{ //(3)コンストラクタの作成 //ウインドウの初期設定を行う public Sample(){ //ウインドウのタイトルバーに表示するテキストを設定 this.setTitle("タイトル"); //ウインドウの大きさを設定 this.setSize(300,200); //ウインドウのクローズボックスをクリックしたときの動作を設定 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //ウインドウの表示場所を設定 this.setLocationRelativeTo(null); } //2 ウインドウにテキストを配置 public static void main(String[] args) { //(1) ウインドウクラスのインスタンスの作成 Sample f = new Sample(); //(2)ウインドウの表示領域の取得 Container c = f.getContentPane(); //(3)パネルのインスタンスの生成 JPanel p = new JPanel(); //(4)ラベルのインスタンスの生成 //テキストのフォントと色の設定 JLabel l = new JLabel("Good Job!"); l.setFont(new Font("Arial", Font.PLAIN, 30)); l.setForeground(Color.BLUE); //(5)ラベルをパネルに配置 p.add(l); //(6)パネルをウインドウの表示領域に配置 c.add(p, BorderLayout.CENTER); //3 ウインドウを表示 f.setVisible(true); } }
Ⅵ.実行結果
- 「Good Job!」と書かれたウインドウが画面の中央に表示される
Ⅶ.参考
- 掌田 津耶乃氏「Java入門 (4) - Swingを使ったGUIプログラミング」
- 酒井貴規氏、垣中元和氏、島浩文氏「SwingでJavaに強くなる」
- Let'sプログラミング「Swingを使ってみよう」
- Oracle Docs関連箇所