• VSCodeでJava SWTを使用する

    VSCode上でJava SWTを使用する方法の備忘録です。
    #Eclipseでやってみたりもしましたが、私にはしっくりきませんでした。。
    #慣れの問題だとは思いますが。。。

    1.JDKのインストール

    Javaの開発環境に必要なJDK(Java Development Kit)を以下のサイトからダウンロードし、インストールします。

    今回はJDK17をインストールしました。

    2.Extension Pack for Java(拡張機能)のインストール

    VSCode上でExtension Pack for Javaをインストールします。 Ctrl+Shift+xをでExtensionタブを開き、左上の検索欄にExtension Pack for Javaを入力します。

    インストールボタンをクリックし、インストールします。 JDKについては自動で認識されるようでした。

    3.Java SWTのインストール

    以下のサイトからJava SWTをインストールします。

    [Downloads] - [Latest Release] - [Download page]をクリックします。

    新しい4.29をクリックします。

    [SWT Binary and Source ] の項目から任意のものをダウンロードします。
    今回は、Windows (64 bit version)のものをダウンロードしました。

    ダウンロードしたzipを解凍すると以下のようなファイルがあります。

    4.プロジェクトの作成

    必要なもののダウンロードが完了したので、JavaのプロジェクトをVSCode上で作成していきます。

    Ctrl+Shift+pを押し、create java projectを入力します。

    No Build Toolを選択し、プロジェクト名を入力します。

    プロジェクト名を入力すると以下のようなファイルが生成されます。


    Java SWTのライブラリをJavaのプロジェクトに登録していきます。
    左下のJava Projects内のReferenced librariesを選択します。

    [+]ボタンをクリックし、先ほどダウンロードしたswt.jarを登録します。

    5.サンプルで動作確認

    以下のコードをsrc/App.javaに貼り付けて動作確認を行います。

    VSCodeのソースコード上にRunというボタンが表示されるので、それをクリックして実行します。

     1import org.eclipse.swt.widgets.Display;
     2import org.eclipse.swt.widgets.Shell;
     3
     4public class App {
     5
     6    public static void main(String[] args) {
     7
     8        Display display = new Display(); // アプリが OS に問い合わせる窓口
     9        Shell shell = new Shell(display); // ウィンドウを表現するクラス
    10        shell.setText("ウィンドウ名");
    11        shell.open();
    12
    13        while(!shell.isDisposed()) { // 終了指令がない間は無限ループ
    14            if(!display.readAndDispatch()) {
    15                display.sleep(); // イベントが発生しない間はスリープ
    16            }
    17        }
    18        display.dispose(); // リソースの解放
    19    }
    20}

    以下のような画面が出たら設定完了です。

    参考文献

    終わりに

    調べた限り多くのブログがExtension Pack for Javaにjava.homeを設定するとありますが、現在はこれをしなくてもやってくれるみたいです。
    Eclipseのほうが色々便利かなと思うところもありますが、エディタ的に色々厳しいのでまずはこれで進めようと思います。。

    comments powered by Disqus