A collection of tools and libraries for easier development on the JavaFX platform!

Overview

This project is archived

I do not realistically have the time to take care of this project, unfortunately. It originally was built along a Twitter client GUI application, and they co-evolved. But that was almost 2 years ago, and Twitter has since essentially made 3rd-party clients impossible...

Thanks for checking it out still! Hope you find a more supported alternative!


EasyFXML logo

A collection of tools and libraries for easier development on the JavaFX platform

Build status Maven Central License

Maintainability Test Coverage Known Vulnerabilities

EasyFXML is an opinionated set of tools aiming to simplify development of robust and modular JavaFX applications.

The project is divided in multiple modules (each explicitly opt-in apart from the eponym core one). Feel free to have a look around:

Notes

This project makes heavy (and sometimes non-obvious) use of JavaFX and Spring Boot features, and requires knowledge of both for optimal experience. You can go head-first without that prior knowledge, but it might not be quite ideal is all.

Licensing and contributions

All contributions are welcome, both as questions, constructive criticism, feature requests and of course pull requests.

There is not yet a clear organization for making first-contributions easy, but a good rule of thumb is to ensure opening an issue before making a pull-request so that the technical implementation's requirements can be discussed before work is done. Then, crack on! :-)

FOSSA Status

Comments
  • FxAsync no error handling -> future never finishes

    FxAsync no error handling -> future never finishes

    public static <T> CompletionStage<T> doOnFxThread(final T element, final Consumer<T> action) {
            CompletableFuture<T> asyncOp = new CompletableFuture<>();
            Platform.runLater(() -> {
                action.accept(element);
                asyncOp.complete(element);
            });
            return asyncOp;
    }
    
    public static <T, U> CompletionStage<U> computeOnFxThread(final T element, final Function<T, U> compute) {
            CompletableFuture<U> asyncComputeOp = new CompletableFuture<>();
            Platform.runLater(() -> asyncComputeOp.complete(compute.apply(element)));
            return asyncComputeOp;
    }
    

    change to:

    public static <T> CompletionStage<T> doOnFxThread(final T element, final Consumer<T> action) {
            final CompletableFuture<T> asyncOp = new CompletableFuture<>();
            Platform.runLater(() -> {
                try {
                    action.accept(element);
                    asyncOp.complete(element);
                } catch (Exception e) {
                    asyncOp.completeExceptionally(e);
                }
            });
            return asyncOp;
        }
    public static <T, U> CompletionStage<U> computeOnFxThread(final T element, final Function<T, U> compute) {
            final CompletableFuture<U> asyncComputeOp = new CompletableFuture<>();
            Platform.runLater(() -> {
                try {
                    asyncComputeOp.complete(compute.apply(element));
                } catch (Exception e) {
                    asyncComputeOp.completeExceptionally(e);
                }
            });
            return asyncComputeOp;
        }
    
    bug 
    opened by Blackdread 7
  • How open new window on click event ?

    How open new window on click event ?

    Hi,

    I have problem with opennng second fxml file on click event in first main component. I invoke method easyFxml.load(component) but windows doesn't open.

    `@Controller public class MainWindowController implements FxmlController {

    @Autowired
    private NewTaxWindowComponent newTaxWindowComponent;
    
    @Autowired
    private EasyFxml easyFxml;
    
    @FXML
    void onNewTaxMenuItemAction(ActionEvent event) {
        easyFxml.load(newTaxWindowComponent);
    }
    }
    

    @Controller public class NewTaxWindowController implements FxmlController {

    // @Autowired // private TaxRepository taxRepository;

    @Autowired
    private EasyFxml easyFxml;
    
    @Autowired
    private MainWindowUiManager mainWindowUiManager;
    
    @Autowired
    private NewTaxWindowComponent newTaxWindowComponent;
    
    @Override
    public void initialize() {
        Scene scene = mainWindowUiManager.getScene(newTaxWindowComponent);
        Stage stage = new Stage();
        stage.setScene(scene);
        mainWindowUiManager.startGui(stage);
    }
    }
    

    `

    When I click button is invoked method onNewTaxMenuItemAction(ActionEvent event). The flow is redirected to NewTaxWindowController when is invoked method initialize(). If I think well I should invoke there startGui() method but this also doesn't work.

    Additionally: When I pass to autwire TaxRepository class which is annotated @Repository, field returns null. Can you explain why is that ?

    opened by hubertstruminski 2
  • Add license scan report and status

    Add license scan report and status

    Your FOSSA integration was successful! Attached in this PR is a badge and license report to track scan status in your README.

    Below are docs for integrating FOSSA license checks into your CI:

    opened by fossabot 2
  • Refresh dependencies

    Refresh dependencies

    Global refresh of dependencies:

    • Move to Java 14 (from 11)
    • Move to OpenJFX 14 (from 11)
    • Move to Spring Boot 2.3.2 (from 2.1.7)
    • Move to JUnit 5 Jupiter (from 4.X)
    • Move to TestFX 4 Junit 5 (from TestFX 4 Junit 4)
    opened by Tristan971 1
  • How to use custom scene

    How to use custom scene

    Hi,

    I'd like to use a custom borderless scene (https://github.com/goxr3plus/FX-BorderlessScene), how can I set the scene for a stage?

    From Lyrebird I know that there is a onStageCreated(final Stage mainStage) method available that gets me the stage, but I also need the main component that should be displayed in the scene to create the custom scene.

    opened by matthjes 1
  • [ImgBot] Optimize images

    [ImgBot] Optimize images

    Beep boop. Your images are optimized!

    Your image file size has been reduced by 37% 🎉

    Details

    | File | Before | After | Percent reduction | |:--|:--|:--|:--| | /easyfxml-samples/easyfxml-sample-form-user/doc/sample-form-user.png | 14.96kb | 9.49kb | 36.53% |


    📝docs | :octocat: repo | 🙋issues | 🏅swag | 🏪marketplace

    opened by imgbot[bot] 1
  • Fxkit base and forms

    Fxkit base and forms

    Add a bit of boilerplate with example to build form-based components with the aim at easy and safe usability.

    This will not go documented quite yet, until it is more stable at least, but will server for experiments in the meantime.

    Also a lot of CI improvements. Build time from 5 minutes 10 secs to 1 minute 30-ish seconds.

    opened by Tristan971 1
  • Move to reverse-dns module names

    Move to reverse-dns module names

    As the Java world moves to a module landscape, it is important to avoid name clashing by following, when possible, a reverse-DNS naming scheme.

    Reasons are the same as package naming.

    opened by Tristan971 1
  • [ImgBot] Optimize images

    [ImgBot] Optimize images

    Beep boop. Your images are optimized!

    Your image file size has been reduced by 21% 🎉

    Details

    | File | Before | After | Percent reduction | |:--|:--|:--|:--| | /doc/images/sample-hello-world.png | 8.52kb | 6.75kb | 20.75% |


    📝docs | :octocat: repo | 🙋issues | 🏅swag | 🏪marketplace

    opened by imgbot[bot] 1
  • Version 3.0.0

    Version 3.0.0

    • Add documentation to warn against CompletableFuture potential issues. ( #23 )
    • Simplify usage of custom @ComponentScan.Filter in Spring Boot configuration
    • Add full JPMS/Jigsaw module path support
    opened by Tristan971 0
  • [ImgBot] Optimize images

    [ImgBot] Optimize images

    Beep boop. Your images are optimized!

    Your image file size has been reduced by 12% 🎉

    Details

    | File | Before | After | Percent reduction | |:--|:--|:--|:--| | /src/test/resources/images/duke.jpg | 1.94kb | 1.70kb | 12.25% |


    📝docs | :octocat: repo | 🙋issues | 🏅swag | 🏪marketplace

    opened by imgbot[bot] 0
  • Tomcat with EasyFXML

    Tomcat with EasyFXML

    How can I run tomcat server with EasyFXML ? After integration my app with EasyFXML localhost doesn't work. Is it possible to run tomcat with EasyFXML?

    opened by hubertstruminski 2
  • Module not found: slf4j.api

    Module not found: slf4j.api

    Hi,

    After I added easyfxml dependency and I used some EasyFXML classes inside my project when I try build project I get error "module not found: slf4j.api".

    I have the following dependencies for slf4j:

    ` org.slf4j slf4j-api 1.7.30

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.30</version>
        </dependency>
    

    `

    In the module-info.java I have the following lines:

    requires java.base; requires java.se; requires org.slf4j; requires org.slf4j.simple;

    I can not find any example for resolve this problem in the internet. I tried change versions but it nothing helped.

    Error: Error:java: module not found: slf4j.api

    Is someone here who knows solution for this problem ?

    bug 
    opened by hubertstruminski 3
Releases(3.3.0)
Owner
Tristan Deloche
Java is good Java is life. And so is free open-source software
Tristan Deloche
Collection of Binding helpers for JavaFX(8)

Advanced-Bindings for JavaFX (8) advanced-bindings is a collection of useful helpers and custom binding implementations to simplify the development of

Manuel Mauky 63 Nov 19, 2022
A collection of Apple UI controls implemented in JavaFX.

Apple FX A collection of Apple UI controls implemented in JavaFX. Available Macos controls: MacosButton MacosCheckBox MacosRadioButton MacosLabel Maco

Gerrit Grunwald 17 Sep 25, 2022
A small tools to play with JavaFX Color.derive() function - allows to create custom colors and to save those in color palettes.

DeriveColorsFX This is not a serious application. Its a small tool where I just played with the method Color::deriveColor provided by JavaFX. Also its

Oliver Löffler 11 Oct 9, 2022
Full Featured Google Chrome Dev Tools to JavaFX WebView browser debugging.

JavaFX WebView Debugger Via WebSocket connection to Google Chrome Dev Tools JavaFx WebView debugging with Chrome Dev tools is highly dependent on Goog

Vladimir Schneider 56 Dec 19, 2022
Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE 8 and provides the functionalities to use and handle easily Tiles in your JavaFX application.

Lib-Tile Intention Lib-Tile is a multi Maven project written in JavaFX and NetBeans IDE and provides the functionalities to use and handle easily Tile

Peter Rogge 13 Apr 13, 2022
🌄 Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)

React Native Photo Editor (RNPE) ?? Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and Ph

Baron Ha. 243 Jan 4, 2023
DataFX - is a JavaFX frameworks that provides additional features to create MVC based applications in JavaFX by providing routing and a context for CDI.

What you’ve stumbled upon here is a project that intends to make retrieving, massaging, populating, viewing, and editing data in JavaFX UI controls ea

Guigarage 110 Dec 29, 2022
To quickly integrate your applications into the EdgeGallery platform, we provide the toolchain project to help developers quickly modify code and migrate applications to the platform.

Toolchain 工具链 工具链是MEC Developer开发者平台中的一个重要特性,当x86平台的App想要上车ARM平台时,底层的代码不可避免的需要进行修改或重写。 App提供者可以通过MEC Developer开发者平台中集成的工具链进行源代码分析,定位需要修改的源代码并根据指导意见进行修

EdgeGallery 19 Jan 7, 2022
Tray Icon implementation for JavaFX applications. Say goodbye to using AWT's SystemTray icon, instead use a JavaFX Tray Icon.

FXTrayIcon Library intended for use in JavaFX applications that makes adding a System Tray icon easier. The FXTrayIcon class handles all the messy AWT

Dustin Redmond 248 Dec 30, 2022
Docking framework for JavaFX platform

Docking framework for JavaFX platform AnchorFX is a gratis and open source library for JavaFX to create graphical interfaces with docking features Anc

Alessio Vinerbi 197 Oct 15, 2022
An image annotation desktop-application written in Java using the JavaFX application platform.

This is an image annotation desktop-application written in Java using the JavaFX application platform. It allows you to create bounding box annotations using rectangular and polygonal shapes. Annotations can be imported and saved from/to JSON files, Pascal VOC format XML-files or YOLO format TXT-files.

Markus Fleischhacker 31 Dec 4, 2022
🍏 A collection of partial JNA bindings for various macOS frameworks. (e.g. Foundation, AppKit, etc.)

JNApple ?? A collection of partial JNA bindings for various macOS frameworks. (e.g. Foundation, AppKit, etc.) Usage These are just some common example

Iridescent 3 Jun 19, 2022
Yet another very simple java 3D software renderer using only standard 2D libraries (Java2D, AWT & Swing). Video: https://youtu.be/hWUX1t9f6zE

Another very simple 3D software renderer Another very simple 3D software renderer implemented in java using only standard libraries (java 2D, AWT & Sw

Leo 13 Oct 17, 2022
Terminal GUI library for simple ANSI console tools and graphical interfaces with Windows/Linux support

TerminalCore Terminal GUI library for Windows/Linux. This library contains all colors as ascii codes, native functions of the respective operating sys

Pascal 3 Oct 19, 2022
Old and archived; More recent development is in https://github.com/Create-Fabric/Create-Refabricated.

NOW ARCHIVED Go here for the continuation of this project. Old README Create Fabric A Fabric port of Create. Create Discord: https://discord.gg/AjRTh6

null 12 Dec 7, 2022
A simple JavaFX application to load, save and edit a CSV file and provide a JSON configuration for columns to check the values in the columns.

SmartCSV.fx Description A simple JavaFX application to load, save and edit a CSV file and provide a JSON Table Schema for columns to check the values

Andreas Billmann 74 Oct 24, 2022
Lobby System Template for a multiplayer java game, with chat and other features, using JavaFX and socket TCP (will be extended to UDP).

JavaFX-MultiplayerLobbySystem JavaFX lobby system for multiplayer games with chat, ready toggle and kick buttons, using socket TCP by default. Demo Cr

Michele Righi 7 May 8, 2022
Solution for rapid development of specific enterprise software

Open-Lowcode Lowcode framework for enterprises Open Lowcode allows organizations develop quickly specific applications, and scale them with a minimum

Open Lowcode 176 Nov 28, 2022
A Java framework for creating sophisticated calendar views (JavaFX 8, 9, 10, and 11)

CalendarFX A Java framework for creating sophisticated calendar views based on JavaFX. A detailed developer manual can be found online: CalendarFX 8 D

DLSC Software & Consulting GmbH 660 Jan 6, 2023