diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ea55c4 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# JavaFX Maven Project + +Example Maven Project for a JavaFX Application. + +**Update**: Added profile fatjar + +**Update**: Added reporting to create a site (html documentation of project) + +**Update**: Java 21 is now fully supported + +This projects includes multiple plugins: +- Build of an App-Image using JPackage (Profile: image) +- Build of an fat jar (Profile: fatjar) +- Use of Maven Wrapper +- Static code analysis with PMD and Spotbugs +- Check of dependency updates during build +- JavaFX plugin to start application + +**Requirements** +To use this Template, all you need is a local Java Installation. +My current advice is to use a long term supported (LTS) version of either Java 17 or Java 21. + +**[Documentation in English](documentation/en/_Index.md)** + +**[Dokumentation in Deutsch](documentation/de/_Index.md)** + +**Important: ChatGPT was utilized to generate the documentation based on +predefined content specifications, as it represents the fastest way to produce +comprehensive documentation.** \ No newline at end of file diff --git a/injectfx-example/pom.xml b/fx-example/pom.xml similarity index 96% rename from injectfx-example/pom.xml rename to fx-example/pom.xml index 48f7828..f5b0b13 100644 --- a/injectfx-example/pom.xml +++ b/fx-example/pom.xml @@ -5,26 +5,26 @@ 4.0.0 - de.neitzel - injectfx + de.neitzel.lib + neitzellib 1.0-SNAPSHOT - injectfx-example + fx-example ${project.artifactId} ${project.artifactId} ${project.artifactId} - de.neitzel.injectfx.example.Main + de.neitzel.fx.injectfx.example.Main ${project.artifactId}-${project.version} - + - de.neitzel - injectfx-lib + de.neitzel.lib + fx ${project.version} diff --git a/fx-example/src/main/java/de/neitzel/fx/component/example/Address.java b/fx-example/src/main/java/de/neitzel/fx/component/example/Address.java new file mode 100644 index 0000000..9166a04 --- /dev/null +++ b/fx-example/src/main/java/de/neitzel/fx/component/example/Address.java @@ -0,0 +1,11 @@ +package de.neitzel.fx.component.example; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Address { + private String street; + private String city; +} \ No newline at end of file diff --git a/fx-example/src/main/java/de/neitzel/fx/component/example/ExampleApp.java b/fx-example/src/main/java/de/neitzel/fx/component/example/ExampleApp.java new file mode 100644 index 0000000..d4ef74e --- /dev/null +++ b/fx-example/src/main/java/de/neitzel/fx/component/example/ExampleApp.java @@ -0,0 +1,36 @@ +package de.neitzel.fx.component.example; + +import de.neitzel.fx.component.ComponentLoader; +import javafx.application.Application; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; + +public class ExampleApp extends Application { + + @Override + public void start(Stage primaryStage) throws Exception { + // Beispielmodel initialisieren + Address address = new Address(); + address.setStreet("Sample Street 1"); + address.setCity("Sample City"); + + Person person = new Person(); + person.setName("Max Mustermann"); + person.setAddress(address); + + // ComponentLoader verwenden + ComponentLoader loader = new ComponentLoader(); + Parent root = loader.load(person, "/person.fxml"); + + // Scene erstellen und anzeigen + Scene scene = new Scene(root); + primaryStage.setTitle("ComponentLoader Example"); + primaryStage.setScene(scene); + primaryStage.show(); + } + + public static void main(String[] args) { + launch(); + } +} \ No newline at end of file diff --git a/fx-example/src/main/java/de/neitzel/fx/component/example/Main.java b/fx-example/src/main/java/de/neitzel/fx/component/example/Main.java new file mode 100644 index 0000000..80565bb --- /dev/null +++ b/fx-example/src/main/java/de/neitzel/fx/component/example/Main.java @@ -0,0 +1,15 @@ +package de.neitzel.fx.component.example; + +/** + * Another Main class as workaround when the JavaFX Application ist started without + * taking care os Classloader Requirements of JavaFX. (Important when starting from inside NetBeans!) + */ +public class Main { + /** + * Additional main methode to start Application. + * @param args Commandline Arguments. + */ + public static void main(String[] args) { + ExampleApp.main(args); + } +} diff --git a/fx-example/src/main/java/de/neitzel/fx/component/example/Person.java b/fx-example/src/main/java/de/neitzel/fx/component/example/Person.java new file mode 100644 index 0000000..2078450 --- /dev/null +++ b/fx-example/src/main/java/de/neitzel/fx/component/example/Person.java @@ -0,0 +1,11 @@ +package de.neitzel.fx.component.example; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Person { + private String name; + private Address address; +} diff --git a/injectfx-example/src/main/java/de/neitzel/injectfx/example/JavaFXApp.java b/fx-example/src/main/java/de/neitzel/fx/injectfx/example/JavaFXApp.java similarity index 91% rename from injectfx-example/src/main/java/de/neitzel/injectfx/example/JavaFXApp.java rename to fx-example/src/main/java/de/neitzel/fx/injectfx/example/JavaFXApp.java index 2d1ca44..2020ead 100644 --- a/injectfx-example/src/main/java/de/neitzel/injectfx/example/JavaFXApp.java +++ b/fx-example/src/main/java/de/neitzel/fx/injectfx/example/JavaFXApp.java @@ -1,4 +1,4 @@ -package de.neitzel.injectfx.example; +package de.neitzel.fx.injectfx.example; import javafx.application.Application; import javafx.fxml.FXMLLoader; @@ -6,8 +6,6 @@ import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; -import java.io.IOException; - public class JavaFXApp extends Application { @Override diff --git a/injectfx-example/src/main/java/de/neitzel/injectfx/example/Main.java b/fx-example/src/main/java/de/neitzel/fx/injectfx/example/Main.java similarity index 91% rename from injectfx-example/src/main/java/de/neitzel/injectfx/example/Main.java rename to fx-example/src/main/java/de/neitzel/fx/injectfx/example/Main.java index 2343191..63b5774 100644 --- a/injectfx-example/src/main/java/de/neitzel/injectfx/example/Main.java +++ b/fx-example/src/main/java/de/neitzel/fx/injectfx/example/Main.java @@ -1,4 +1,4 @@ -package de.neitzel.injectfx.example; +package de.neitzel.fx.injectfx.example; /** * Another Main class as workaround when the JavaFX Application ist started without diff --git a/injectfx-example/src/main/java/de/neitzel/injectfx/example/MainWindow.java b/fx-example/src/main/java/de/neitzel/fx/injectfx/example/MainWindow.java similarity index 94% rename from injectfx-example/src/main/java/de/neitzel/injectfx/example/MainWindow.java rename to fx-example/src/main/java/de/neitzel/fx/injectfx/example/MainWindow.java index 27802f7..07fa5c2 100644 --- a/injectfx-example/src/main/java/de/neitzel/injectfx/example/MainWindow.java +++ b/fx-example/src/main/java/de/neitzel/fx/injectfx/example/MainWindow.java @@ -1,4 +1,4 @@ -package de.neitzel.injectfx.example; +package de.neitzel.fx.injectfx.example; import javafx.event.ActionEvent; import javafx.fxml.FXML; diff --git a/fx-example/src/main/resources/address.fxml b/fx-example/src/main/resources/address.fxml new file mode 100644 index 0000000..2bc5a08 --- /dev/null +++ b/fx-example/src/main/resources/address.fxml @@ -0,0 +1,17 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/injectfx-example/src/main/resources/de/neitzel/injectfx/example/MainWindow.fxml b/fx-example/src/main/resources/de/neitzel/fx/injectfx/example/MainWindow.fxml similarity index 88% rename from injectfx-example/src/main/resources/de/neitzel/injectfx/example/MainWindow.fxml rename to fx-example/src/main/resources/de/neitzel/fx/injectfx/example/MainWindow.fxml index 5e84972..0583f78 100644 --- a/injectfx-example/src/main/resources/de/neitzel/injectfx/example/MainWindow.fxml +++ b/fx-example/src/main/resources/de/neitzel/fx/injectfx/example/MainWindow.fxml @@ -3,7 +3,7 @@ - +