shiisuke’s blog

文系卒。社会人5年目くらい。ITやプログラミングの勉強で学んだことを書きます。

ウインドウに任意のテキストを表示する(Java Swing)

f:id:shiisuke1229:20190909235856p:plain

Ⅰ.きっかけ

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)ウインドウクラスのインスタンスの作成

クラス名 変数f = new クラス名();

(2)ウインドウの表示領域の取得

  • JFrameの表示領域であるContentPaneを取得する
Container 変数c = 変数f.getContentPane();

(3)パネルのインスタンスの生成

JPanel 変数p = new JPanel();

(4)ラベルのインスタンスの生成

  • javax.swingパッケージにあるJLabelクラスのインスタンスを生成する
  • 引数にはウインドウで表示するテキストを指定する
JLabel 変数l = new JLabel(String text);
  • フォントのサイズと色は以下で設定する
変数l.setFont(new Font("[フォント]", Font.PLAIN, [フォントサイズ]));
変数l.setForeground(Color.[色]);

(5)ラベルをパネルに配置

変数p.add(変数l);

(6)パネルをウインドウの表示領域に配置

  • 第1引数で、組み込むJLabelインスタンスを指定する
  • 第2引数で、テキストの配置を設定する3
変数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!」と書かれたウインドウが画面の中央に表示される
f:id:shiisuke1229:20190909235856p:plain

Ⅶ.参考


  1. https://www.atmarkit.co.jp/ait/articles/0605/31/news125.html

  2. import文を記述する理由はこちらを参照

  3. 配置の調整方法はこちらを参照