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);
        cell.setContextMenu(contextMenu);
        return cell;
    }
};

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

(more…)

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:

(more…)

JavaFX links of the week, April 29

Hi all. The links for this week are up a day early because I have an early flight to catch tomorrow on my way to JavaOne Hyderabad. Conversely, next weeks links will be a day or three late as I will be traveling back home. Therefore, I think everything balances out πŸ™‚ Let’s get on with the links.

Oh – by the way – if you’re at JavaOne Hyderabad next week and you spot me, come up and say hello. I really love chatting to people, but I can’t pick the JavaFX fans from the Java EE people….and I have nothing to say to Java EE people πŸ™‚

Catch you all next week! πŸ™‚

Announcing JavaFX 2.1

JavaFX 2.1 was released yesterday right on schedule, along with the JavaFX 2.1 release notes, and a huge number of new articles on the JavaFX documentation site. From the Oracle press release, here are the key improvements in JavaFX 2.1 (aside from fixing a whole heap of bugs):

  • Available for Windows and Mac OS X (with Linux support currently as preview release) (See also Henrik Stahl’s blog on Mac OS)
  • Includes playback of MPEG-4 multimedia containing H.264/AVC video and AAC audio
  • New WebView support for JavaScript to Java method calls, which enables JavaScript content to leverage Java for demanding operations
  • Support for enhanced font rendering on LCD displays, including sub-pixel rendering
  • Additional UI enhancements such as combo box, stacked chart, and application-wide menu bar
  • Bundled with the Java 7u4 release
  • Oracle has started the OpenJFX project in OpenJDK as part of the plan to open source JavaFX

Now – onward with JavaFX 2.2!

Interview with Peter Zhelezniakov

Interview with Peter Zhelezniakov

It’s been a busy few weeks for me with JavaOne Japan in early April, a heap of development work on JavaFX 2.2, and JavaOne India coming up next week. I’ve slightly dropped the ball on interviews during all of this, but here is another interview from a member of the JavaFX team at Oracle. Peter Zhelezniakov is an engineer in the WebView team, where he works on WebView-related JavaFX APIs all the way down to working with the Webkit code that WebView uses under the covers. Enjoy – and feel free to ask WebView related questions here – I’m sure Peter will be happy to help. πŸ™‚

Hi Peter – thanks for offering to be interviewed. Could you please introduce yourself?
I came to the JavaFX team from Swing, where I was working mostly on Look-and-Feels, but also on Swing’s own HTML package.

So you work on the WebView feature of JavaFX. This is a major component of the new JavaFX 2 series of releases – could you please give an overview of what exactly WebView is?
WebView is a JavaFX node used to display Web pages, with the help of the underlying WebEngine object. It is basically a browser component with a richer programming interface: you can for example examine structure of a page, inject arbitrary scripts, or listen to HTML events. Internally it is a Java wrapper around the Webkit open browser engine used by many desktop and mobile browsers.

(more…)

JavaFX links of the week, April 23

Welcome to this weeks links roundup. I hope you all find something useful or interesting πŸ™‚

That’s all for this week. Feel free to send me a link if you think you’ve done something that your peers may be interested in. Catch you all next week πŸ™‚

JavaFX links of the week, April 16

Hey everyone – I’m back in the chair this week having just returned from Japan where I presented at JavaOne and then took a vacation. Thanks to Carl Dea for stepping in for me the last two weeks to keep the links flowing, and for also finding a bunch of links for this weeks post. I apologise if your link has been missed (please let me know), and I also apologise if I repeat a link that has already been posted. With that, let’s get into the links! πŸ™‚

Catch you all next week! πŸ™‚