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.

It hasn’t quite been four weeks yet, but I’m already back to announce the availability of the final release of ControlsFX 8.0.0. This release is a combination bug fix and feature release, having gone through only one (proper) developer preview release (there was supposed to be a developer preview 2 release, but due to issues deploying the build we had enough time to fix up the remaining bugs / features and now we’re at the final release! ๐Ÿ™‚ ). A huge number of bugs have been fixed, in particular related to dialog layout. It is highly recommended that people use JavaFX 8.0 b91 or above when running ControlsFX.

For more information on what ControlsFX is, who it is aimed at, how to get it / use it / contribute back to it, you should refer to the ControlsFX page. A few things to note are:

  1. This release of course includes all the features that were in developer preview 1. If you aren’t familiar with that release, be sure to check out the blog post for that release!
  2. I clarified the (slightly odd) approach to release versioning for ControlsFX over on the ControlsFX page (scroll down to the ‘Release Versioning’ section). In short, we use the common x.y.z numbering scheme, where the x.y values represent the minimum JavaFX version required, and the z value represents the release. In our current case, ControlsFX 8.0.0 is still being developed, and requires at least JavaFX 8.0. Future releases will increment to 8.0.1, 8.0.2, and so on until we require JavaFX 8.1 or whatever version comes after JavaFX 8.0. In short, despite 8.0.0 being a big version jump (it’s the first release after all!), we plan to increment only the .z value for a very long time! ๐Ÿ™‚
  3. Visit the bitbucket project to watch (or fork) the project. If you fork please consider providing pull requests so that ControlsFX continues to improve!

To conclude this post, here’s a quick rundown on the new features included in this final 8.0.0 release:

New in 8.0.0 final:

Dialog ‘Command Links’ support
Command links are common on the Windows platform. The version we have in ControlsFX looks like the following:


Actions API
The newly-added Actions API is used by both the dialogs API and the ButtonBar API. It essentially abstracts away the notion of how a control is represented, instead focusing on the properties of the control (e.g. text, graphic, etc). This makes it really easy to reuse the same Action in multiple places inย  your UI. We’ve also developed convenience API to convert Actions into the common UI controls (see the ActionUtils class for these methods).

Hugely improved JavaDocs
One of the goals of ControlsFX is to have high quality JavaDocs, so one of the main drivers for this release was to improve those further. As always, the JavaDocs can be read online, but they are also available as part of the download. The intention is that the JavaDocs should be the primary way of people learning how to use the ControlsFX API, so there are good code samples and screenshots of the controls in action. Hopefully this will help to get people started quickly.

Updated styling for SegmentedButton
The SegmentedButton control initially had one style, which is now called the ‘dark’ style. This style is now no longer the default, instead being replaced with styling that is more fitting with the JavaFX 8.0 Modena style. However, the dark style is not lost – it is still available to those of you that prefer it. Refer to the SegmentedButton JavaDoc to see how to switch between the two styles available. Here’s the difference:


Improved ControlsFX sampler application
To help people investigate the ControlsFX controls, the ControlsFX sample application has seen some further polish, integrating a WebView to make browsing the JavaDocs easier. Here’s what it looks like:


New in 8.0.0 Developer Preview 1:

A horizontal container for buttons, which automatically places the buttons in the correct position for the underlying operating system. Just annotate the buttons with their type and it’ll handle the rest!


A collection of pre-built, modal dialogs providing a really simple yet powerful API. Supports all manner of pre-built dialogs, and even allows for custom dialogs to be easily created.


A fast, virtualised grid container similar to ListView, except that there can be multiple cells on each row. Great for showing images!


When you want a user to specify a range, right now you need to give them two text fields to type into (or two sliders). Yuck! This control is essentially the standard JavaFX slider but with two draggable thumbs on it – one representing the low value and the other the high value. Much better!


A simple control that allows users to specify a rating between zero and a maximum value. This control supports partial ratings and updating on hover or on click.


When you have a ToggleGroup with buttons in it, it looks nicer when the buttons are grouped together (rather than individual buttons). This is exactly what the SegmentedButton control does – it ‘merges’ together all of your buttons in a ToggleGroup so that it is clear to users that the buttons are related.