Welcome to the JFXtras Project.

The goal of JFXtras is to provide those pieces that developers often need in their day-to-day work, but that are (or were) missing from JavaFX. A quick impression can be found at the overview page.

JFXtras and JFXtras Labs

The project is divided into two different pieces. Components in the official JFXtras library are considered stable with APIs that are unlikely to change much in future releases. The JFXtras Labs library contains components that are currently under active development and are considered experimental. The API of the components may change significantly from one release to the next, or they may be abandoned all together.

Once the JFXtras developers feel that a component has reached a mature state, it will be moved from Labs into the main JFXtras library.

The JFXtras library has been divide into smaller parts, mainly to prevent a single artifact to become fairly large (which is a problem for the Internet of Things development). Currently JFXtras consists of the following parts:

jfxtras-common - containing basic classes, like layouts, utility classes, etc.

jfxtras-fxml - containing FXML related classes, most notably JFXtrasBuilderFactory which is used to easily add builders to the FXMLLoader.

jfxtras-controls - containing standard controls, like several date and time pickers

jfxtras-agenda - containing the 'Agenda' (Google Calendar) control

jfxtras-icalendarfx - iCalendar API implementing RFC 5545 (more)

jfxtras-icalendaragenda - Agenda extension for displaying and editing an iCalendarFx VCalendar (more)

jfxtras-window - containing a non standard Window implementation

jfxtras-menu - containing menu implementations, like corner and circular popup menu

jfxtras-gauges-linear - gauges for creating a dashboard.

jfxtras-font-roboto - an easy way to include Google's Roboto font in your application.

jfxtras-all - containing all JFXtras controls in one jar for SceneBuilder (excluding labs)

jfxtras-labs - containing incubator classes

jfxtras-labs-all - containing all JFXtras controls in one jar for SceneBuilder (including labs)

JFXtras and JFXtras Labs are licensed under the New BSD License

If you want to use the controls in SceneBuilder, please use the all-in-one (aka shadow) jar. SceneBuilder is not able to use controls that require supporting jars, like for example jfxtras-controls.jar requiring jfxtras-common.jar.

See It!

Below are a few screenshots to give an impression of some of the components available in both JFXtras and JFXtras Labs

More details can be found at the overview page.

Try It!

JFXtras Samples allows you to see JFXtras components in one convenient application. Samples requires Java 8.

Download JFXTras 8.0 Samples here.

Use java -jar jfxtras-labs-samples-8.0-r6-SNAPSHOT-all.jar to start

Use It!

The version system of JFXtras deviates from the commonly used versioning schemes; the first two digits indicate the JavaFX release that is used for the distribution, so 8.0-r2 means "based on JavaFX 8.0", the "-r2" means release 2 of JFXtras. Hence the JFXtras release scheme does not include bug fix releases, only regular releases.

The reason of using an "r" in the release has to do with the fact that we do not control the release scheme of JavaFX. If we had chosen the more compatible notation "8.0.1" (.1 indicating JFXtras release 1), and JavaFX would have a bug fix release 8.0.1, we would be in trouble. In the releasing scheme with the "r" this would lead to a JFXtras 8.0.1-r1 release.

Group ID Artifact ID Version org.jfxtras jfxtras-common

jfxtras-fxml

jfxtras-controls

jfxtras-agenda

jfxtras-window

jfxtras-menu

jfxtras-gauges-linear

jfxtras-font-roboto

jfxtras-icalendaragenda

jfxtras-icalendarfx

jfxtras-all

jfxtras-labs The latest versions:

8.0-r6 / 8.0-r7-SNAPSHOT (for Java 8)

9.0-r1 / 9.0-r1-SNAPSHOT (for Java 9)



Releases are available in Maven central

Snapshots are available in Sonatype snapshot

For Javadoc see the links above



The Java 9 module names are the same as the artifact names, except dashes become dots, so: jfxtras-gauges-linear becomes jfxtras.gauges.linear

Issues

If you find any problems, discuss this with the developers on the mailing list, or file an issue on GitHub for the appropriate project.

The users mailing list is here and the developers mailing list is here.

Learn from It!

Writing these controls in JavaFX 2 and later has teached a lot of lessons; things that work, things that didn't work, or worked better than others, and in the end resulted in a few best practices. It's not like any of us has all the wisdom on JavaFX or anything, but being on this since 2012, well, at least some commonalities were found. So some of it was wrapped up in a small roughly 1.5 hour presentation, touching on some of JavaFX's strong points, slip ups and other topics, titled: "Lessons learned developing in JavaFX, let us make your mistakes for you". If you are interested in the presentation, contact the project lead.

Monocle

Monocle is a rendering pipeline implementation for JavaFX aimed at embedded devices. But it also has a special headless mode, which allows programs to run without drawing on an actual screen. This mode is very important for unit testing releases on build servers like Jenkins or Travis, but because Monocle is aimed at embedded devices, it is not distributed as part of any Windows or Linux Java distribution. Even though the Monocle sources are easy to compile, it still is more convenient to simply add a dependency in Ant / Maven / Gradle, so we have compiled it for you and pushed it out to maven.

Group ID Artifact ID Version org.jfxtras openjfx-monocle 1.8.0_20

The version is the same as the Java(FX) version the sources were copied from.

(available in Maven central)

Since com.sun.glass.ui.PlatformFactory can't find Monocle classes from the external jars, you need to change:

public static void main(String[] appArgs) {

Application.launch(appClass, appArgs);

}



to

public static void main(String[] appArgs) {

new ToolkitApplicationLauncher().launch(appClass, appArgs);

}



and start the Application with -Djavafx.monocle.headless=true.



ToolkitApplicationLauncher.jar: https://gist.github.com/hastebrot/cbca1128dd791966e3a6

Authors and Contributors

The following people have contributed to the JFXtras project.

Stephen Chin (@steveonjava) - founder

Dean Iverson (@deanriverson) - founder

Tom Eugelink (@tbeernot) - active project lead

Gerrit Grunwald (@HanSolo)

Thomas Bolz (@teabeeoh)

Jonathan Giles (@JonathanGiles)

Jim Weaver (@javafxpert)

Andy Till (@andytill)

Andreas Billmann (@frosch95)

Gregg Setzer (@GreggSetzer)

Hendrik Ebbers (@guigarage)

Mark Heckler (@hecklerm)

johnBgood (@johnBgood)

Jose Pereda (@jperedadnr)

Michael Hoffer (@miho)

Laurent Nicolas (@MrLoNee)

Sai Pradeep Dandem (@SaiPradeepDandem)

Thierry Wasylczenko (@twasyl)

Will Hoover (@whoover)

Carl Dea (@carldea)

Pedro Duque Vieira (@dukke)

On github the most current list of members can be found!