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, May 29

Hi all! Sorry for the delayed post this week – I have just moved to a new house (just outside of Palmerston North, New Zealand), and didn’t have internet access. Now that things are starting to get back to normal (and my internet is thankfully restored), I’ve got a bunch of links for your reading pleasure. Enjoy! 🙂

That’s all for another week. Again, sorry for the delay. See you all again next week! 🙂

ListView, custom cell factories, and context menus

ListView, custom cell factories, and context menus

One question I see occasionally is people asking how to go about using prebuilt cell factories (such as those provided in the DataFX project run by Johan Vos and I, those sitting in the OpenJFX 2.2 repo in the javafx.scene.control.cell package, or just those that they have created internally), and also show a context menu when the user right clicks. More generally, the problem is that cell factories are blackboxes, and there is no support for chaining cell factories together (or even getting hold of the cells as they are being used).

The answer is quite simple: wrap the cell factory inside another cell factory, and set the ContextMenu on the wrapping cell. In other words, you would write code such as this (for ListView):

// The cell factory you actually want to use to render the cell
Callback<ListView<T>, ListCell<T> wrappedCellFactory = ...; 

// The wrapping cell factory that will set the context menu onto the wrapped cell
Callback<ListView<T>, ListCell<T> cellFactory = new Callback<ListView<T>, ListCell<T>>() {
    @Override public ListCell<T> call(ListView<T> listView) {
        ListCell<T> cell = wrappedCellFactory  == null ? new DefaultListCell<T>() : wrappedCellFactory.call(listView);
        return cell;

// Creating a ListView and setting the cell factory on it
ListView<T> listView = new ListView<T>();


JavaFX links of the week, May 21

Welcome to this weeks links roundup. I’ve got plenty of good JavaFX links this week, so enjoy! 🙂

Catch you again next week 🙂

JavaFX links of the week, May 14

JavaFX links of the week, May 14

Hi all. Sorry about the lack of a post last week – I just got back from JavaOne India and was overloaded with work which I had to catch up on. However, I was collecting links all last week as well, and there are now a heap of good links to read through this week! 🙂 Enjoy!

Scenic View Sneak-peak

Finally, here is the current, in-development version of Scenic View that I am working on with Ander Ruiz. I will release an updated version of Scenic View as soon as all the features are in place.

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

Introducing Scenic View

Introducing Scenic View

Update: More recent releases of Scenic View have been released since this post! Go to the Scenic View page to download the latest release!

Developing user interfaces is tricky, regardless of whether you’re just trying to understand the high level scenegraph layout, or whether you’re pushing pixels for a finely tuned user interface. I understand and feel for people in this situation. UI developers come up with all kinds of tricks, for example, temporarily introducing a bold one pixel border of varying colours around components to better understand the user interface. I certainly know I have done that countless times in the past when building user interfaces, and frankly, it is painful and massively time consuming.

Inside the JavaFX team, since times of yore (that is, since at least JavaFX 1.3, but perhaps earlier – my memory fails me here), we’ve had this remarkable little tool that was called Scenic View. It somehow just burst into existence, through the brilliance of Amy Fowler, whom many should know as the layout guru for both Swing and JavaFX. Scenic View is a tool that can be called to browse a live view of the application scenegraph. Here’s a screenshot: