danpapa blog

趣味のプログラミング等について

VSCode + JavaFX + SceneBuilder

操作方法(動画)

えーっと今回はVSCode + JavaFX + SceneBuilderの環境を作ってみました。
いつものように、未完成(適当)ですが、とりあえず動くようですw

ん?なぜVSCode + JavaFX + SceneBuilderなのかって?
それは・・・出来そうな気がしたからw


環境構築方法
実は、忘れちゃったので思い出しながら頑張ってみます。
Javaの環境は下記で簡単にインストールしました
devblogs.microsoft.com

JavaFXは下記からダウンロード&適当な場所に解凍
openjfx.io

・SceneBuilderは下記よりダウンロード&インストール
gluonhq.com

・後はVSCodeJava拡張機能を少しいじってます(テンプレート)
 場所:C:/Users/ユーザー名/.vscode/extensions/vscjava.vscode-java-dependency-0.9.0/templates/Java11
 変更するファイル:.classpath
 追加するファイル:.vscode/launch.json

.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
	<classpathentry kind="src" path="src"/>
	<classpathentry kind="output" path="bin"/>
	<classpathentry kind="lib" path="D:/0000_APPS/0000_SourceCode/Java/0000_lib/javafx-sdk-11.0.2/lib/javafx.base.jar"/>
	<classpathentry kind="lib" path="D:/0000_APPS/0000_SourceCode/Java/0000_lib/javafx-sdk-11.0.2/lib/javafx.controls.jar"/>
	<classpathentry kind="lib" path="D:/0000_APPS/0000_SourceCode/Java/0000_lib/javafx-sdk-11.0.2/lib/javafx.fxml.jar"/>
	<classpathentry kind="lib" path="D:/0000_APPS/0000_SourceCode/Java/0000_lib/javafx-sdk-11.0.2/lib/javafx.graphics.jar"/>
	<classpathentry kind="lib" path="D:/0000_APPS/0000_SourceCode/Java/0000_lib/javafx-sdk-11.0.2/lib/javafx.media.jar"/>
	<classpathentry kind="lib" path="D:/0000_APPS/0000_SourceCode/Java/0000_lib/javafx-sdk-11.0.2/lib/javafx.swing.jar"/>
	<classpathentry kind="lib" path="D:/0000_APPS/0000_SourceCode/Java/0000_lib/javafx-sdk-11.0.2/lib/javafx.web.jar"/>
	<classpathentry kind="lib" path="D:/0000_APPS/0000_SourceCode/Java/0000_lib/javafx-sdk-11.0.2/lib/javafx-swt.jar"/>
</classpath>

launch.json

{
    // IntelliSense を使用して利用可能な属性を学べます。
    // 既存の属性の説明をホバーして表示します。
    // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "name": "Debug (Launch) - Current File",
            "request": "launch",
            "vmArgs": "--module-path D:\\0000_APPS\\0000_SourceCode\\Java\\0000_lib\\javafx-sdk-11.0.2\\lib --add-modules javafx.base,javafx.controls,javafx.fxml,javafx.graphics,javafx.media,javafx.swing,javafx.web",
            "mainClass": "${file}"
        }
    ]
}

danpapaの環境ではこんな感じです。各自の環境に合わせてください。
多分、これだけだったと思い・・・ます。自信はありませんw
あ、勿論、これが正しい方法なのかは、わかりません!(これは自信ありますw)

おっと、忘れ物。
追記
 ・変更するファイル:../App.java.sample

App.java.sample

package app;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class App extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("mainframe.fxml"));
            Parent root = (Parent) fxmlLoader.load();
            Scene scene = new Scene(root);

            primaryStage.setTitle("test-Window");
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}