The Lib-FXML library simplifies the loading of JavaFX relevant files (model,
view, controller, .fxml, .css, .properties) and enables a standardized handling
of the data flow to (in, from) the gui.
Inspired by Adam Bien's library afterburner.fx, which unfortunately hasn't been
developed since 2015, the library Lib-FXML simplifies the daily developer tasks
in context from the aboved mentioned two main points:
- Simplifying the loading of
JavaFXrelevant files and - offering a standardized data flow to (in, from) the gui.
- Demo 'All in Ones'
- Intention
General features
Extended features
Additional features - Demo files
DemoAllInOnes.java
DemoAllInOnesController.java
DemoAllInOnesEntity.java
DemoAllInOnesSqlEntityProvider.java
demoallinones.css
demoallinones.fxml
demoallinones.properties
DemoInfoWriter.java
DemoAllInOnesInfoWriter.java
DemoAllInOnesPreferencesWriter.java - How it works
Usage from the singleton class 'FXMLAction'
Usage from the abstract class 'FXMLController'
Usage from the class 'FXMLModel'
Usage from the class 'FXMLView'
Usage from the interface 'FXMLModelable'
Usage from the interface 'FXMLRegisterable'
- Intention
- JavaDoc
- Download
- Requirements
- Installation
- Contribution
- License
- Autor
- Contact
This demo wants to show, explain how to integrate the various features from the library Lib-FXML into a demo application:
- How to use the abstract class FXMLController as a convention to managed the presentation from the FXMLModel data in a concrete implementation from
FXMLController. - How to use the class
FXMLModelas a lightweight version from an entity to manage the dataflow to (in, from) the controller. - How to use the class FXMLView to load the gui declaration (.fxml file) and map it (initialization from the gui) to a controller.
- How to use the singleton FXMLAction to register (handle) lambda methods such like Consumer, Function and Supplier.
- (TODO) How to use the class FXMLModel to add additional methods which extend the original entity behavior. For example
#isUpdatedProperty(). - How to use the interface FXMLRegisterable as a convention which allowes developers to register for example action methods.
- How to use the interface FXMLModelable as a convention to create a lightweight version from an entity.
- How to implement a
singletoninstance with Optional<T> in FXMLAction and access the class behaviours with the static method#getDefault(). - How to use the JavaFX default binding features to automatically update the FXMLModel (entity) data to (in, from) the controller.
- How to use the
JavaFXstandard class FXMLLoader in FXMLView to load.fxml,.css,.propertiesfiles and assoziate them with a controller. - How to style with
CSSdifferentJavaFXcomponents such like AnchorPane, Button, TextField, ScrollPane. - How to use the library 'Lib-Logger' (https://github.com/Naoghuman/lib-logger) to log messages easily to a log-file.
In this section all files are listed which are involved into this demo. Also their main purpose are explained:
- Shows how to start a JavaFX application :) .
- Shows how to create an instance from the class FXMLView to show then the gui with 'view.getRoot().orElse(new AnchorPane)' in the demo application.
- Shows how the interface FXMLRegisterable can be used as a convention to register the action method from this class.
- Shows how the developer can access the URL from the
.fxmlfile. - Shows how the developer can access the optional ResourceBundle if defined.
- Shows how to use the classes 'DemoInfoWriter', 'DemoAllInOnesInfoWriter' and 'DemoAllInOnesPreferencesWriter' to write the demo infos.
- Shows how to use the overriden method FXMLController#configure(FXMLModel) to bind the data from the
FXMLModelto the gui components. - Shows how the interface FXMLRegisterable can be used as a convention to register the various action methods from this controller.
- Shows how to use the different
FXMLAction#handle(...)methods to fit the necessities from this controller.
- Shows how to create a simple
POJOwith JavaFX properties (LongProperty and StringProperty). - Shows the usage from
JavaFXproperties to bind data which means we don't need to be aware that the data is up-to-date :). - Shows how to use the interface FXMLModelable which allowed to configure a FXMLModel with selected data properties from the entity.
- Shows how to define a simple
sqlentity provider which simulates thecrudoperations for an entity to (from) a database. - Shows how to use the interface FXMLRegisterable as a convention to register the action methods from this class.
- Shows how to use the class FXMLAction to register the (crud) action methods via lambda injection.
- Shows how to create a
CSS(Cascading Style Sheets) file which styles will be then shown in the demo application. - Shows how to style with
CSSdifferent JavaFX components such like AnchorPane, Button, TextField, ScrollPane.
- Shows how to define a declaration from the demo gui in form from a special JavaFX
XMLfile so calledFXML. - Shows how then the initialization will be done during the loading and mapping from the
.fxmlfile with the correspondingcontroller.
See FXMLView#initializeFXMLLoader(FXMLModel) for more informations.
- Shows how to create a
.propertiesfile which can contains differentkey/valueString pairs. Over thekeythevaluecan retrieved then in the application. - An alternative is the useage from my Library
Lib-I18N(https://github.com/Naoghuman/lib-i18n), which allowed multilingualism depending from an actualLocale.
The next files are used to create the demo informations:
- The abstract class 'DemoInfoWriter' offers various functions for writing different styled informations into a VBox.
- For example: Styled text (size, FontPosture), Buttons, Separators and TextFields.
- A concrete implementation from the abstract class 'DemoInfoWriter' for this demo.
- All informations about the features from the library
Lib-FXMLand the demo :) in the left side from the demo are written with this class.
- Another concrete implementation from the abstract class 'DemoInfoWriter'.
- With this class the interactive area on the right side in the demo application is written.
This section shows how to use the different classes and interfaces from the Lib-FXML api:
- Used in 'DemoAllInOnes', 'DemoAllInOnesController', 'DemoAllInOnesInfoWriter' and 'DemoAllInOnesSqlEntityProvider'.
- Answers the question how to implement a
singletoninstance with Optional<T> in FXMLAction and access the class behaviours with the static method#getDefault(). - Answers the question how to register (handle) action methods from type Consumer<FXMLModel>, EventHandler<ActionEvent> and Function<Long, FXMLModel>.
- Answers also the question how to register (handle) action methods from type EventHandler<ActionEvent>.
- Used in 'DemoAllInOnesController'.
- Used in FXMLView.
- Answers the question how to use the abstract class as a convention to managed the presentation from the FXMLModel data in a concrete controller.
- Answers the question how the controller (it's attributs) is the initialization from the declaration in the
.fxmlfile.
- Used in 'DemoAllInOnes', 'DemoAllInOnesController', 'DemoAllInOnesEntity' and 'DemoAllInOnesSqlEntityProvider'.
- Used in FXMLAction, FXMLController, FXMLModelable and FXMLView.
- Answers the question how to use the model to managed the dataflow to (in, from) the gui.
- Answers the question how the FXMLModel will be initialized in the entity 'DemoAllInOnesEntity' with the convention methods from the interface
FXMLModelable. - Answers the question how to add some additional data methods to extend the behavior from the original entity.
- Used in 'DemoAllInOnes'.
- Answers the question how to use the class FXMLView to load the gui declaration (.fxml file) and map it (initialization from the gui) to a controller.
- Answers the question how to use the JavaFX standard class FXMLLoader in
FXMLViewto load.fxml,.css,.propertiesfiles and assoziate them with a controller.
- Used in 'DemoAllInOnesEntity'.
- Answers the question how to use the interface as a convention to initialize a FXMLModel with different entity properties.
- Used in 'DemoAllInOnes', 'DemoAllInOnesController' and 'DemoAllInOnesSqlEntityProvider'.
- Answers the question how to use the interface as a convention to register different action methods via
lambdainjection.
The JavaDoc from the library Lib-FXML can be explored here: JavaDoc Lib-FXML (in work)
Image: JavaDoc Lib-FXML v0.3.0-PRERELEASE

Current version is 0.3.0-PRERELEASE. Main points in this release are:
- Extend the api with exciting features like FXMLAction, FXMLModel.
- Create an extended demo application with all features from the library.
Download:
- Release v0.3.0-PRERELEASE (04.23.2019 / MM.dd.yyyy)
An overview about all existings releases can be found here:
- Overview from all releases in Lib-FXML.
- On your system you need JRE 8 or JDK 8 installed.
- The library lib-fxml-0.3.0-PRERELEASE.
In the library following dependencies are registered:
- The library lib-logger-0.6.0.jar.
- Included in
Lib-Loggeris the library log4j-api-2.10.0.jar. - Included is
Lib-Loggeris the library log4j-core-2.10.0.jar.
- Included in
- If not installed download the JRE 8 or the JDK 8.
- Optional: To work better with FXML files in a JavaFX application download the JavaFX Scene Builder under 'Additional Resources'.
- Choose your preferred IDE (e.g. NetBeans, Eclipse or IntelliJ IDEA) for development.
- Download or clone Lib-FXML.
- Download or clone Lib-Logger.
- Open the projects in your IDE and run them.
- If you find a
BugI will be glad if you could report an Issue. - If you want to contribute to the project plz fork the project and do a Pull Request.
The project Lib-FXML is licensed under General Public License 3.0.
The project Lib-FXML is maintained by me, Naoghuman (Peter Rogge). See Contact.
You can reach me under peter.rogge@yahoo.de.

