[Warning: this documentation might be slightly out-of-date. Check the code repository, check the samples sub-project. New controls and features might already have been added that are not present in this documentation page]

This is a Java library that contains a collection of new controls to be used in JavaFX applications.

As of the time of writing of this documentation page, FXComponents is being built using Java 17 (the latest LTS Java release) and JavaFX 20.

Some of the examples in this page are going to be shown with the JMetro theme or Transit theme applied for a better visual impact. But you don’t need to use JMetro or Transit, you can use your own theme.

If you want to see code examples on how to use the Controls in this library, check the “FXComponents-samples” sub-project inside the repository. It has some small example applications using these Controls. The code is available on Github.

How to get it

This library is available on Maven Central.

Gradle example:

 implementation 'com.pixelduke:FXComponents:1.1.2' 

Maven example:


Replace version number with the one you’d want.


FXComponents license is “GNU General Public License, version 2, with the Classpath Exception’“

Request for feedback

If you’re using FXComponents please send pictures of your app to .

If you can, ideally, please also share it through social media (Twitter) and let me know (you can reference me through my twitter handle @P_Duke and you can also use the #FXComponents tag). It will be very important to check how you are using FXComponents and adjust it to better fit the use cases. Also, for showcasing example uses (if you allow).

It is also important for me, and to keep me motivated to continue, to know that FXComponents is being used and how it is being used.

Given all these unpaid work is given out for free, I just ask you to share it is being used and how if you can. 


Contributions via Pull Requests (PR) are welcome! Help grow this library if you like it! Before filing a PR please create an issue in the issue tracker.


List Builder

A control with 2 lists. A source list and a target list.

The target list will contain all the elements the user chose from the source list.

The user can drag and drop items from the source list onto the target list or use the buttons available to accomplish that.

Reordering of the lists is also possible through drag and drop.

Reordable ListView

A ListView that the user can reorder by drag and dropping each cell.

Blocking Progress Bar

A blocking dialog (blocks user input) that shows a progress bar while a background operation is in progress.

The ProgressBar can be of indeterminate progress or not.

The developer passes a Runnable to the showAndWait method. That Runnable will be executed in a background task, progress can be updated through convenience methods in the Task class API.