Javaのデスクトップアプリの作り方

前回の記事で、Javaの開発環境の構築が完了したので、今回はデスクトップアプリの作成方法を説明していく。
※デスクトップアプリとは、PCのデスクトップ上で動作するアプリのこと

今回は、下記を達成することが目標です。

  • Eclipse上でコード修正・動作確認
  • .exeファイルを作成
  • .exeファイルをダブルクリックで実行
    Eclipse上での動作確認時と同じ挙動であることを確認

開発環境構築は下記の記事参照:

olafnosuke.hatenablog.com


デスクトップに表示する画面を作る

前回の記事では、文字列をコンソール出力するのみの単純なアプリだったが、
今回はアプリを起動したら、デスクトップ上に画面が表示されるアプリを作成するので、
その表示内容についてコードに記載します。

前回作成したコードは以下のものかと思います。これに対して修正を加えていきます。

package sample;

public class Sample {

    public static void main(String[] args) {
        System.out.println("Hello World");

    }

}

画面のサイズを決める

まずはデスクトップ上に表示する画面のサイズを設定します。
ここで出てくる「JFrame」クラスは、デスクトップ上に表示する画面を定義するのに使用するクラスです。

mainメソッドの処理内容を、下記のように修正してください。

package sample;

import javax.swing.JFrame;

public class Sample {

    public static void main(String[] args) {
        // コンストラクタの引数でアプリタイトルを設定
        JFrame frame = new JFrame("デモアプリ");
        // デスクトップに表示する画面のサイズ(幅,高さ)
        frame.setSize(500,500);
    }
}

この時点でEclipseになんかエラーで怒られてしまう場合は、「JFrame」クラスのimport文が書いてあるかどうかも確認してください。

画面の表示周りの設定をする

次に、画面表示周りで下記3つの設定をします。
「追加」行コメントで挟まれている処理を追加してください。

  • 画面をデスクトップ上に表示するための設定
  • 画面をデスクトップの中央に表示するための設定
  • 画面を閉じた際にアプリケーションを終了させるための設定
package sample;

import javax.swing.JFrame;

public class Sample {

    public static void main(String[] args) {
        // コンストラクタの引数でアプリタイトルを設定
        JFrame frame = new JFrame();
        // デスクトップに表示する画面のサイズ(幅,高さ)
        frame.setSize(500,500);

        // ↓追加----------------------------------------------------------------------------
        
        // このウィンドウをデスクトップ上に表示する
        frame.setVisible(true);

        // 画面上下左右中央にウィンドウを表示させる
        frame.setLocationRelativeTo(null);
        
        // 「X」ボタンで画面を閉じたらアプリケーションを終了させる
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // ↑追加----------------------------------------------------------------------------
    }
}

画面に表示するメッセージを設定する

作成した画面に「Hello World」と表示させるためにメッセージを定義します。
「追加」行コメントで挟まれている処理を追加してください。

※今回はラベルしか追加しませんが、テキストボックスやボタンなども表示させることができます

www.javadrive.jp

package sample;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Sample {

    public static void main(String[] args) {
        // コンストラクタの引数でアプリタイトルを設定
        JFrame frame = new JFrame();
        // デスクトップに表示する画面のサイズ(幅,高さ)
        frame.setSize(500,500);
    
        // このウィンドウをデスクトップ上に表示する
        frame.setVisible(true);

        // 画面上下左右中央にウィンドウを表示させる
        frame.setLocationRelativeTo(null);
        
        // 「X」ボタンで画面を閉じたらアプリケーションを終了させる
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // ↓追加----------------------------------------------------------------------------

        // 画面上に表示するメッセージ
        JLabel label = new JLabel("Hello World");

        // メッセージを画面上部に表示させる
        label.setVerticalAlignment(JLabel.TOP);

        // 画面にメッセージを追加する
        frame.add(label);

        // ↑追加----------------------------------------------------------------------------
    }
}

この時点でEclipseになんかエラーで怒られてしまう場合は、「JLabel 」クラスのimport文が書いてあるかどうかも確認してください。


作成したプログラムを動かしてみる

現在のコードは以下の感じになっていると思います。
今回のコーディング作業は以上です。

package sample;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Sample {

    public static void main(String[] args) {
        // コンストラクタの引数でアプリタイトルを設定
        JFrame frame = new JFrame("デモアプリ");
        // デスクトップに表示する画面のサイズ
        frame.setSize(500,500);
        
        // このウィンドウをデスクトップ上に表示する
        frame.setVisible(true);
        
        // 画面上に表示するメッセージ
        JLabel label = new JLabel("Hello World");
        // メッセージを画面上部に表示させる
        label.setVerticalAlignment(JLabel.TOP);
        frame.add(label);
        
        // 画面上下左右中央にウィンドウを表示させる
        frame.setLocationRelativeTo(null);
        
        // 「X」ボタンで画面を閉じたらアプリケーションを終了させる
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

作成したプログラムの実行は、「パッケージ・エクスプローラー」でクラスファイルを右クリックー「実行」ー「Javaアプリケーション」で行う。

実行した結果、下記のようなウィンドウが表示されたら成功です。


Jarファイルを作成する

作成したプログラムを、Eclipse上でなくても実行できるようにするために、ここからはexeファイルの作成を目標に作業します。
Javaの場合、実行ファイルは「jarファイル」と呼ばれるものなので、exeファイルを作成する前に、まずはjarファイルを作成します。

Eclipseツールバーの「ファイル」→「エクスポート」を選択

表示されたダイアログで「実行可能JARファイル」を選択して「次へ」を押下

下記の設定を行い「完了」を押下

  • 起動構成:今回のプログラムを作成した「Mainメソッドのあるクラス - プロジェクト名」をプルダウンから選択
  • エクスポート先:任意の場所を選択
  • ライブラリー処理:「生成されるJARに必須ライブラリーを抽出」を選択

指定したエクスポート先にjarファイルが出力されていることを確認する。


Jarファイルからexeファイルを作成する

exeファイルの作成には別途ツールを作成するので、下記のページからダウンロードしてください。
Windows PCを利用している方は「exe」ファイルをダウンロードすればOKです。

sourceforge.net

ダウンロード出来たら、exeファイルを実行し、インストール作業を実行してください。
インストール完了後、ツールを起動します。(スタートメニューのアプリ一覧に追加されていると思います)
その際に下記のウィンドウが出てきた方は環境変数の設定を行います。

環境変数の設定

上記のWindowに書いてあるメッセージは、「このツールはPCにJava8(以上の)実行環境が必要ですよ」と言っています。
なので、Javaの実行環境についてPCに定義してあげる必要があります。

Eclipse環境変数を自動設定してくれるバッチが用意されているので、それを実行します。
バッチファイルの場所は、「Eclipseインストールフォルダ/Java」です。

いくつかバッチが用意されていますが、今回は「set-JAVA_HOME-17.cmd」をダブルクリックで実行します。
理由は、プロジェクトを作成する際に、今回のJavaプログラムはJava17で動くように定義しているためです。

exeファイル作成

インストールしたツールを起動すると下記のような画面が表示されます。

Output-fileとJarに設定を記載後、画面上部の歯車ボタンを押下する

  • Output-file:exeファイルの出力場所
  • Jar:さっき作成したJarファイルのパス

と、下記のような設定を保存するファイルの保管場所を聞かれるので入力後、「保存」を押下するとexeファイルが作成されます。


exeファイル実行

出力されたexeファイルをダブルクリックで起動して、Eclipseで動作確認していた時と同じように画面が表示されれば成功です。

以上!