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 @@
+
+
+
+
+
+
+
+
+
+
+