JavaFX JavaFX Forms mit Groovy starten

lam_tr

Top Contributor
Hallo zusammen,

ich habe hier ein kleiner Editor zum starten von JavaFX Forms mit CodeBehind (Groovy Skript) hinterlegt. Mein erster Schritt ist JavaFX über Groovy Script Engine zu starten.

Wie ist das möglich?

Hier ist ein altes Beispiel: https://dzone.com/articles/calling-javafx-from-java

Und hier was ich versucht habe, leider wird die UI nicht geöffnet, warum nicht?

Main Klasse:
Code:
import java.io.InputStreamReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class Main {

    public static void main(String[] args) throws ScriptException {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByExtension("groovy");
        InputStreamReader reader = new InputStreamReader(Main.class.getResourceAsStream("main.groovy"));
        engine.eval(reader);
    }
}

Groovy Klasse
Code:
import javafx.application.Application
import javafx.scene.Scene
import javafx.scene.control.Button
import javafx.scene.layout.StackPane
import javafx.stage.Stage

import groovy.transform.CompileStatic

@CompileStatic
class HelloWorldFx extends Application {

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

    @Override
    void start(Stage primaryStage) {
        def btn = new Button()

        btn.text     = "Say 'Hello World'"
        btn.onAction = { println 'Hello World!' }

        def root = new StackPane()

        root.children.add btn

        primaryStage.title = 'Hello World!'
        primaryStage.scene = new Scene(root, 300, 250)
        primaryStage.show()
    }
}

Was benötige ich um da diesen Code zum Laufen zu bekommen?

Grüße
lam

P.S. Ich wußte nicht genau wohin dieser Thread reinpasst, da er ein bisschen und indirekt mit JavaFX zu tun hat, habe ich es hierrein gemacht.
 
Jetzt habe ich die Main Klasse angepasst.

Code:
public class Main {

    public static void main(String[] args) throws ScriptException, CompilationFailedException, IOException, URISyntaxException {
        GroovyClassLoader loader = new GroovyClassLoader(Main.class.getClassLoader());
        GroovyShell shell = new GroovyShell(loader, new Binding());
        
        Script script = shell.parse(new File(Main.class.getClass().getResource("/roovy/main.groovy").toURI()));
        Object result = script.run();
    }
}

An sich will ich die groovy Klasse nicht evaluieren sondern ausführen.

Jetzt bekomme ich beim Ausführen diese Exception
Code:
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: MainFx
    at javafx.application.Application.launch(Application.java:260)
 

Neue Themen


Zurück
Oben