FX Experience Has Gone Read-Only

I've been maintaining FX Experience for a really long time now, and I love hearing from people who enjoy my weekly links roundup. One thing I've noticed recently is that maintaining two sites (FX Experience and JonathanGiles.net) takes more time than ideal, and splits the audience up. Therefore, FX Experience will become read-only for new blog posts, but weekly posts will continue to be published on JonathanGiles.net. If you follow @FXExperience on Twitter, I suggest you also follow @JonathanGiles. This is not the end - just a consolidation of my online presence to make my life a little easier!

tl;dr: Follow me on Twitter and check for the latest news on JonathanGiles.net.

Announcing ControlsFX 8.0.5

Announcing ControlsFX 8.0.5

It’s time for another ControlsFX release, this time taking the version number to 8.0.5. As always, ignore the minor version increment – this is a massive release. This release has new controls and a number of bug fixes, so it is recommended that everyone upgrade as soon as possible. As per usual, the latest version is always available in maven central (as well as snapshot versions of the next release), and you can download the release directly from the ControlsFX website.

This release was developed by Eugene Ryzhikov, Samir Hadzic, Dirk Lemmermann,Β David Grieve, IsNull, Dennis Fischer, Paul Jonas, Kouchuu, and I. It is because of these fine folks you can use ControlsFX, so be sure to give them a high-five if you pass them in the street.

If you aren’t familiar with ControlsFX, you should check out the main ControlsFX website, and more importantly, the ControlsFX features page. Once you’re done there you should take a look at our sample app and javadocs.

With that out of the way, here is what is new in ControlsFX 8.0.5:

AutoComplete TextField
With this you can provide suggestions to users as they type into a TextField. The popup will only show options based on the currently typed input.


The BreadCrumbBar control is designed to allow people to easily navigate back up a hierarchical page structure. It’s based on the same API as the TreeView control (that is, it uses the TreeItem structure). This control is useful to visualize and navigate a hierarchical path structure, such as file system. Here’s what it currently looks like:

The BreadCrumbBar UI control.

The BreadCrumbBar UI control

A pane used to display a full-size content node and four initially hidden nodes on the four sides. The hidden nodes can be made visible by moving the mouse cursor to the edges of the pane. The hidden node will appear (at its preferred width or height) with a short slide-in animation. The node will disappear again as soon as the mouse cursor exits it. A hidden node / side can also be pinned, and it will remain visible as long as it stays pinned.


The HiddenSidesPane, with a node at the bottom that has animated into view.

This control was initially developed by my colleague David Grieve before being integrated into ControlsFX. It is designed to show a small blurb of text above a node (most commonly an ImageView, but it will work with any Node). The text can be collapsed down to a single line, or expanded to show the entire text. In some ways, it can be thought of as a always visible tooltip (although by default it is collapsed so only the first line is shown – hovering over it (or clicking on it if the showOnHover functionality is disabled) will expand it to show all text). Shown below is a screenshot of the InfoOverlay control in both its collapsed and expanded states:

The InfoOverlay control

The InfoOverlay control

A master / detail pane is used to display two nodes with a strong relationship to each other. Most of the time the user works with the information displayed in the master node but every once in a while additional information is required and can be made visible via the detail node. By default the detail appears with a short slide-in animation and disappears with a slide-out. This control allows the detail node to be positioned in four different locations (top, bottom, left, or right).


A (rather ugly!) screenshot of a master pane (a green rectangle) with a detail pane (the red rectangle) expanded from the bottom. Hopefully your use case might be a bit prettier!

ControlsFX has had the NotificationPane feature for a release or two now, but that required that the notification appear within the window. Some use cases are to simply inform the user of an event, even when the main window itself is not visible (or focused) – think email notifications, for example. This is where the Notifications class comes in – it will show a notification message to users in one of nine locations on the screen, and even supports stacking multiple notifications, and showing complex scenegraphs. After a set duration, the notification will fade out.


A plus minus slider allows the user to continuously fire an event carrying a value between -1 and +1 by moving a thumb from its center position to the left or right (or top and bottom) edge of the control. The thumb will automatically center itself again on the zero position when the user lets go of the mouse button. Scrolling through a large list of items at different speeds is one possible use case for a control like this. You may be familiar with Google Picasa, which has a similar control for scrolling through the image list.

The PlusMinusSlider in both horizontal and vertical states

The PlusMinusSlider in both horizontal and vertical states

FXSampler Source Code Tab
FXSampler (the sample app we wrote for demonstrating ControlsFX, and which is open source to allow for third parties to use it to demonstrate their own software samples) now allows for displaying the source code for samples, making it even easier to teach people how to use new API. Here’s a screenshot:

Source code in FXSampler

Source code in FXSampler

Miscellaneous Improvements
There are always a number of improvements that fall under the radar for each release, but some of the more notable improvements include:

  • Support for row resizing in the SpreadsheetView control.
  • Glyph font loading is now lazy (which is important for FontAwesome as we download the font from the web when it is used).
  • Support for CSS styling dialogs.
  • There is now much better numeric field support in PropertySheet. It includes automatic support for editing integer and floating point values.
  • ControlsFX dialogs are now about to be internationalized, and we’re planning to extend this internationalization support through to all controls in the next release. We already have English and Russian translations, and would happily accept other translations if people are willing.

That’s all for this release. Go forth, download and enjoy! πŸ™‚

Announcing ControlsFX 8.0.3

Announcing ControlsFX 8.0.3

I am incredibly pleased to announce on behalf of the entire ControlsFX team that ControlsFX 8.0.3 is now ready for download! This release comes approximately two months after the 8.0.2 release, and is a major release. For those too impatient to read the details, go here to download the release (or as always it is also available via Maven Central – just update your dependencies to 8.0.3). For those unfamiliar with the features of ControlsFX, refer to the features page. With that out of the way, let’s get into the juicy details of this release! πŸ™‚

Firstly, it goes without saying that this release was a team effort, including input from the following people: Eugene Ryzhikov, Samir Hadzic, Henri Biestro, Dirk Lemmermann, Tomas Mikula, ‘Badisi’, Jean-FranΓ§ois Henrard, and Danno Ferrin. It is due to these fine folks hard work that we have this release today!

Secondly, the reason why this release is two months in the making rather than the usual one month cycle is that we decided to improve the ControlsFX sampler program. It is now more generic (it is a totally separate application now), and because of this we are able to support other third party JavaFX projects. What this means is that other projects (such as JFXtras, for example) can now use the FXSampler app to demonstrate their own features, which saves them from having to write their own sample app. The ControlsFX team is more than happy to help other third party projects to make use of the FXSampler framework, just reach out to us in our Google groups. As of now the JFXtras team is already in the process of porting their samples to use this new framework.


Announcing ControlsFX 8.0.2

Announcing ControlsFX 8.0.2

It’s been roughly a month since 8.0.2 Developer Preview 2 was released, but we’re back again already with the final release of ControlsFX 8.0.2 As I always eagerly note, despite the small version 0.0.1 version increment, this is a major release of ControlsFX, bringing with it a bunch of new functionality and bug fixes. Everyone is recommended to upgrade!

For those of you that have not been following along since 8.0.1 was released, there have been two developer releases of 8.0.2 – developer preview 1 and developer preview 2. You might want to browse back and see what was in those developer previews, but I’ve also included the highlights below (and if you’re really new to ControlsFX, you might want to check out the even higher-level ControlsFX feature overview page). If you just want to download ControlsFX, it’s at the usual location.

That’s enough – here is what’s new in 8.0.2 (compared with 8.0.1, which was released on July 7th, 2013):


Announcing ControlsFX 8.0.2 Developer Preview 2

The releases of ControlsFX keep rolling out the door! This month we have another developer preview release of ControlsFX 8.0.2 available for download. As usual, this release adds a bunch of bug fixes and new features. The most notable changes in this release include:


  • Support for dates in the PropertySheet control.
  • Support for icon font packs (like Font Awesome and IcoMoon). This is inspired by Jens Deters FontAwesomeFX work, and we look forward to future collaboration with him both inside and outside of ControlsFX.
  • Improved worker progress dialog.
  • Improved ControlsFX sample application to actually work from the command line! πŸ™‚ (Previously it only run if you cloned the repo and run from within an IDE, whoops!)


  • Improved API and continued development of the SpreadsheetView control.
  • Support for fixing any column to the left side of the SpreadsheetView.


  • The introduction of an ActionProxy annotation (to create actions directly by annotating methods) which can be discovered at runtime using the ActionMap class.
  • The introduction of ActionTraits to more cleanly specify the functionality of actions when used in dialogs.
  • The introduction of ActionTextBehavior to more easily specify what text is shown in UI controls when built from an action.
  • Now that we support icon font packs and have an @ActionProxy annotation, we have linked the functionality together, so you can define an Action on a method with a font icon simply as follows: @ActionProxy(text=”Action Text”, image=”@FontAwesome:STAR”)

That is quite a nice list given ControlsFX 8.0.2 developer preview 1 only came out around a month ago! As always, head over to the ControlsFX page to download and learn how to get involved!

In general we encourage people to upgrade to this release, but do warn that of course this release is not as polished as a final release (so therefore the documentation is less complete, and the new API more likely to change). It’s up to you whether you stay on 8.01 or keep up with us πŸ™‚

I can’t conclude without thanking the contributors to this release, including Eugene Ryzhikov, Samir Hadzic,Β Henri Biestro, Jens Deters, Ryan Jaeb, and John Malc.

Finally, I know this is a wall of text – I highly recommend you all take a moment and run the HelloControlsFX sample application – in there we try to demonstrate all the functionality, and I think (and hope) you should be fairly impressed πŸ™‚

Announcing ControlsFX 8.0.2 Developer Preview 1

Announcing ControlsFX 8.0.2 Developer Preview 1

I seem to be on a blogging / open source release roll at the moment, as I’ve got a new release of ControlsFX available today to go with the release of Scenic View I put out the other day. This release of ControlsFX is the first developer preview release of ControlsFX 8.0.2, and contains a number of bug fixes and new features (as always, note that 0.0.x releases in ControlsFX are major releases, despite what the number implies). For those of you playing along at home, ControlsFX is continuing to be developed at breakneck pace – we’ve so far had major releases in May, June, July and now August (we’re apparently marching at around a one-release-a-month beat).

This release was primarily driven due to changes in private API in JavaFX 8.0 b102 and later that causes ControlsFX to no longer work in these releases. Therefore, ControlsFX 8.0.0 and ControlsFX 8.0.1 releases are now effectively deprecated due to this, as they no longer work, and ControlsFX 8.0.2 developer preview 1 requires JavaFX 8.0 b102 or later.