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.

JavaFX links of the week, March 31

A huge number of links this week – people really are having fun with JavaFX these days, which is great to see!! 🙂

That’s all for this week – catch you in a weeks time.

JavaFX links of the week, March 24

Hi all. The big news this week was of course Java 8.0 being released, but that didn’t seem to stop all of you from getting your projects done – there is a heap of interesting news this week! Keep up the great work, and to everyone else, enjoy! 🙂

  • As mentioned, Java 8.0 / JavaFX 8.0 was released this week. It shouldn’t surprise anyone that this is a major release of JavaFX, bringing with it a heap of new features and bug fixes, having been in development for a very long time! If you haven’t already, you can download JDK 8 from the usual source. Whilst that is downloading, you can learn more about what is new in JavaFX 8.0, or read the JavaFX documentation. There are heaps of features in this release, but some of my (very biased!) favourites include new controls (TreeTableView and DatePicker), UI control support on embedded platforms, print support, 3D support, bi-directional text support, and of course the new Modena stylesheet that is used by default. You can read more detail about the JavaFX features in JDK 8 in the release notes.
  • Tom Eugelink has added a new ‘CircularPane’ layout container to the JFXtras project. His blog post is a very interesting read that covers the details of implementing such a layout (to avoid overlapping nodes, for example).
  • Tomas Mikula continues to create interesting JavaFX projects! This week he has open sourced his EasyBind project, which “leverages lambdas to reduce boilerplate when creating custom bindings.” Overall it looks like a very useful library for people to investigate using in their projects.
  • Speaking of Tomas, he has also done a blog post titled “Trigger processing after a period of inactivity“, which shows how to use ReactFX to defer processing of user input until a specified period of user’s inactivity.
  • Michael Berry has blogged about draggable and detachable tabs in JavaFX. This is something I’ve been wanting to do in JavaFX for a very long time, so I’m pleased someone has already done it 🙂 It would be great to see this contributed back to OpenJFX / JFXtras / ControlsFX so that it could be more widely used and tested.
  • Adam Bien has announced afterburner.fx version v1.4.4. This release includes support for resource bundles and improved support for mocking.
  • Dino Tsoumakis has updated followme.fx, a sample afterburner.fx project for iOS based on Adam Bien’s afterburner.fx.
  • Jens Deters has posted a call for people to verify the responsiveness of their applications to different screen / font size configurations, after he found one of his apps rendered poorly.
  • Christoph Nahr has released MIME Browser 1.3, a JavaFX-based application for browsing MIME messages that are locally stored in standard EML files.
  • Sean Phillips has a video titled “Enhancing NASA Mission Support with JavaFX 8“. The video demonstrates his work with JavaFX, ControlsFX, and NetBeans. Very impressive stuff.
  • Mark Stephens has a blog post with some screenshots / information about the new (and commercial) JavaFX-based PDF viewer that IDR Solutions is working on.
  • Dirk Lemmermann has released a first early access build of his (commercial) JavaFX-based FlexGanttFX library.

Catch you next week 🙂

JavaFX links of the week, March 17

A heap of links this week – you’ve all been very busy! 🙂

That’s all folks. See you next week! 🙂

JavaFX links of the week, March 10

Another week rolls around, and so do a bunch more of your links. Enjoy!

  • A colleague of mine in the JavaFX team at Oracle, David Grieve, has started up a new blog. His first post is titled ‘lambda to the rescue‘, and it covers how, with the help of lambdas in Java 8, he is able to write better code in JavaFX.
  • Juergen Kress has a post about there now being NetBeans support for JavaFX on iOS.
  • I announced, on behalf of the ControlsFX project, that version 8.0.5 was released. This release is a major release with a number of new and useful controls. If you are unfamiliar with ControlsFX, be sure to check out the features page for a high-level summary of all the cool stuff available in ControlsFX.
  • There have been new releases of ScalaFX for both JavaFX 2.x and 8.x. If you’re a Scala fan, then you should definitely check this library out.
  • Pedro Duque Vieira has blogged about adding ProgressBar support in his JavaFX Metro stylesheet.
  • Geertjan Wielenga has interviewed Walter Nyland and Jason Wexbridge on their new book titled ‘NetBeans Platform for Beginners’, and the relevance of the Java desktop.
  • Jeff Martin posted an update to SnapCode this week with new Mouse and Keyboard sensing features, new pen graphics features and numerous improvements and fixes.

That’s that for another week. Catch you all next week! 🙂

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 LemmermannDavid 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! 🙂