diff --git a/pom.xml b/pom.xml index c75db0d..578cc9f 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,7 @@ FXAppModule 17 3.6.3 + javafxapp 5.9.1 @@ -52,6 +53,7 @@ UTF-8 ${java.version} ${java.version} + ${java.version} @@ -66,6 +68,11 @@ javafx-graphics ${javafx.version} + + org.openjfx + javafx-fxml + ${javafx.version} + org.openjfx javafx-web @@ -108,6 +115,7 @@ + ${jar.file} org.apache.maven.plugins @@ -191,208 +199,6 @@ - - org.apache.maven.plugins - maven-dependency-plugin - ${maven.dependency.plugin} - - - copy-dependencies - package - - copy-dependencies - - - ${project.build.directory}/modules - false - false - true - - - - - - - org.moditect - moditect-maven-plugin - ${moditect.maven.plugin} - - - add-module-info-to-dependencies - package - - ${java.version} - ${project.build.directory}/modules - true - - - - - - org.apache.logging.log4j - log4j-core - ${log4j.version} - - - open module org.apache.logging.log4j.core { - requires java.logging; - requires java.rmi; - - requires transitive java.compiler; - requires transitive java.desktop; - requires transitive java.management; - requires transitive java.naming; - requires transitive java.scripting; - requires transitive java.sql; - requires transitive java.xml; - - requires org.apache.logging.log4j; - - exports org.apache.logging.log4j.core; - exports org.apache.logging.log4j.core.appender; - exports org.apache.logging.log4j.core.appender.db; - exports org.apache.logging.log4j.core.appender.db.jdbc; - exports org.apache.logging.log4j.core.appender.mom; - exports org.apache.logging.log4j.core.appender.mom.jeromq; - exports org.apache.logging.log4j.core.appender.mom.kafka; - exports org.apache.logging.log4j.core.appender.nosql; - exports org.apache.logging.log4j.core.appender.rewrite; - exports org.apache.logging.log4j.core.appender.rolling; - exports org.apache.logging.log4j.core.appender.rolling.action; - exports org.apache.logging.log4j.core.appender.routing; - exports org.apache.logging.log4j.core.async; - exports org.apache.logging.log4j.core.config; - exports org.apache.logging.log4j.core.config.arbiters; - exports org.apache.logging.log4j.core.config.builder.api; - exports org.apache.logging.log4j.core.config.builder.impl; - exports org.apache.logging.log4j.core.config.composite; - exports org.apache.logging.log4j.core.config.json; - exports org.apache.logging.log4j.core.config.plugins; - exports org.apache.logging.log4j.core.config.plugins.convert; - exports org.apache.logging.log4j.core.config.plugins.processor; - exports org.apache.logging.log4j.core.config.plugins.util; - exports org.apache.logging.log4j.core.config.plugins.validation; - exports org.apache.logging.log4j.core.config.plugins.validation.constraints; - exports org.apache.logging.log4j.core.config.plugins.validation.validators; - exports org.apache.logging.log4j.core.config.plugins.visitors; - exports org.apache.logging.log4j.core.config.properties; - exports org.apache.logging.log4j.core.config.status; - exports org.apache.logging.log4j.core.config.xml; - exports org.apache.logging.log4j.core.config.yaml; - exports org.apache.logging.log4j.core.filter; - exports org.apache.logging.log4j.core.filter.mutable; - exports org.apache.logging.log4j.core.impl; - exports org.apache.logging.log4j.core.jackson; - exports org.apache.logging.log4j.core.jmx; - exports org.apache.logging.log4j.core.layout; - exports org.apache.logging.log4j.core.layout.internal; - exports org.apache.logging.log4j.core.lookup; - exports org.apache.logging.log4j.core.message; - exports org.apache.logging.log4j.core.net; - exports org.apache.logging.log4j.core.net.ssl; - exports org.apache.logging.log4j.core.osgi; - exports org.apache.logging.log4j.core.parser; - exports org.apache.logging.log4j.core.pattern; - exports org.apache.logging.log4j.core.script; - exports org.apache.logging.log4j.core.selector; - exports org.apache.logging.log4j.core.time; - exports org.apache.logging.log4j.core.time.internal; - exports org.apache.logging.log4j.core.tools; - exports org.apache.logging.log4j.core.tools.picocli; - exports org.apache.logging.log4j.core.util; - exports org.apache.logging.log4j.core.util.datetime; - exports org.apache.logging.log4j.core.util.internal; - - uses org.apache.logging.log4j.core.util.WatchEventService; - uses org.apache.logging.log4j.core.util.ContextDataProvider; - - provides javax.annotation.processing.Processor with - org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor; - provides org.apache.logging.log4j.message.ThreadDumpMessage.ThreadInfoFactory with - org.apache.logging.log4j.core.message.ExtendedThreadInfoFactory; - provides org.apache.logging.log4j.spi.Provider with - org.apache.logging.log4j.core.impl.Log4jProvider; - - provides org.apache.logging.log4j.core.util.ContextDataProvider with - org.apache.logging.log4j.core.impl.ThreadContextDataProvider; - } - - - - - - - ${main.class} - ${project.build.sourceDirectory}/module-info.java - - - - --ignore-missing-deps - --multi-release - ${java.version} - - - - add-module-info - - - - create-runtime-image - package - - create-runtime-image - - - - ${project.build.directory}/modules - - - ${main.module} - - - ${launcher} - ${main.module} - - true - 2 - - APP_WITH_DEPENDENCIES - true - ${project.build.directory}/jlink-image - - - - - - com.github.akman - jpackage-maven-plugin - ${jpackage.maven.plugin} - - - package - - jpackage - - - ${appName} - IMAGE - ${project.build.directory}/jlink-image - ${main.module}/${main.class} - - - - - com.github.spotbugs spotbugs-maven-plugin @@ -484,6 +290,92 @@ + + org.apache.maven.plugins + maven-dependency-plugin + ${maven.dependency.plugin} + + + + copy-dependencies + package + + copy-dependencies + + + ${project.build.directory}/modules + org.openjfx + runtime + + + ${project.groupId} + ${project.artifactId} + ${project.version} + ${project.packaging} + + + false + false + true + + + + + + copy + install + + copy + + + ${project.build.directory}/modules + + + ${project.groupId} + ${project.artifactId} + ${project.version} + ${project.packaging} + ${project.build.finalName}.jar + + + true + + + + + + + com.github.akman + jpackage-maven-plugin + ${jpackage.maven.plugin} + + ${appName} + IMAGE + + + + + javafx\..* + + + + + + javafx.controls + + ${main.class} + ${project.build.directory}/modules + ${jar.file}.jar + + + + install + + jpackage + + + + diff --git a/src/main/java/de/kneitzel/JavaFXApp.java b/src/main/java/de/kneitzel/JavaFXApp.java index fe23b82..a0f7b5b 100644 --- a/src/main/java/de/kneitzel/JavaFXApp.java +++ b/src/main/java/de/kneitzel/JavaFXApp.java @@ -1,33 +1,42 @@ package de.kneitzel; import javafx.application.Application; +import javafx.application.Platform; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Button; +import javafx.scene.layout.AnchorPane; import javafx.scene.layout.StackPane; import javafx.stage.Stage; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.io.IOException; public class JavaFXApp extends Application { static final Logger logger = LogManager.getLogger(JavaFXApp.class); @Override - public void start(Stage primaryStage) { + public void start(Stage primaryStage) throws IOException { + primaryStage.setTitle("Hello World!"); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MainWindow.fxml")); + Parent root = fxmlLoader.load(); + primaryStage.setScene(new Scene(root)); + primaryStage.show(); + /* Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(e -> System.out.println("Hello World!")); StackPane root = new StackPane(); root.getChildren().add(btn); - primaryStage.setScene(new Scene(root, 300, 250)); - primaryStage.show(); + */ } public static void main(String[] args) { logger.warn("Starting ..."); launch(args); } - } diff --git a/src/main/java/de/kneitzel/MainWindow.java b/src/main/java/de/kneitzel/MainWindow.java new file mode 100644 index 0000000..4398a1b --- /dev/null +++ b/src/main/java/de/kneitzel/MainWindow.java @@ -0,0 +1,30 @@ +package de.kneitzel; + +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; + +import java.net.URL; +import java.util.ResourceBundle; + +public class MainWindow implements Initializable { + + @FXML + private TextField textField; + public Button button; + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + if (button == null) { + textField.setText("Button is null"); + } else { + textField.setText("Button is not null"); + } + } + + @FXML + private void onButtonClick(ActionEvent actionEvent) { + + } +} diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 6971745..4c9a3a2 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -3,6 +3,7 @@ module FXAppModule { requires javafx.graphics; requires javafx.controls; requires javafx.web; + requires javafx.fxml; requires org.apache.logging.log4j; requires org.apache.logging.log4j.core; diff --git a/src/main/resources/de/kneitzel/MainWindow.fxml b/src/main/resources/de/kneitzel/MainWindow.fxml new file mode 100644 index 0000000..07c63e6 --- /dev/null +++ b/src/main/resources/de/kneitzel/MainWindow.fxml @@ -0,0 +1,11 @@ + + + + + + + +