Dean Iverson has just now blogged about creating custom Caspian controls in JavaFX. As soon as I saw his link run up on Twitter I fired it around my team mates in the JavaFX controls team (yes, we’re still working, and in fact we’re all working precisely on what Dean is talking about). We all like what he is doing, and with JavaFX 1.3 coming up we hope to make this kind of thing far easier.
From Deans blog post:
Creating custom controls in JavaFX is not difficult. Creating custom controls that fit nicely with the default Caspian theme, with its pervasive use of gradients and animation, is a little trickier. This is only because the utility classes and methods that make it simple lie buried within com.sun packages that are not publicly documented. A little digging reveals a few gems that can be used to make your controls fit right in with the core JavaFX controls.
So, if you’re keen right now to create great looking skins in JavaFX using the Caspian technology that shipped in JavaFX 1.2, give Deans blog post a read.
Welcome back to JavaFX links of the week. There have been a few interesting bits of news this week, so let’s get right into it.
- This week saw the final release of NetBeans 6.8. This release includes improvements in JavaFX support. Give it a whirl and let us know what you think of the improvements.
- Somewhat relatedly, a preview release of the NetBeans RAD tool is apparently due out this coming week. This tool is a NetBeans plugin similar to the Matisse GUI Builder for Swing, but, of course, for JavaFX.
- Stuart Marks, one of our fellow team mates in the JavaFX controls team, continues his series on ‘that infernal scene graph warning message‘. It’s a must read if you want a glimpse into the thought process that goes on within the JavaFX team.
- The JFXStudio holiday coding challenge is nearly over – so get your entries in if you are working on something!
- After Richard Bair recently presented to the Silicon Valley JavaFX Users Group, Sten Anderson has announced that he is talking this week to the Chicago Java Users Group. Similarly, Jonathan Giles be presenting to the Auckland Java Users Group this week.
- Richard Bair also let us know that the Vancouver Olympics chose to use JavaFX in an application on their website.
- The Exadel blog shows how to run JavaFX SDK examples using their JavaFX plugin for Eclipse.
- A new JavaFX book appeared on the scene this week somewhat unexpectedly (i.e. no one at fxexperience.com knew about it, which is odd given we’ve been involved in the reviewing of many of the earlier JavaFX books). The book is titled ‘ JavaFX Special Effects: Taking Java RIA to the Extreme with Animation, Multimedia, and Game Elements’, and Jim Weaver recently spoke to the author, Lucas Jordan.
- Alex Ruiz has created a new JavaFX Maven plugin. Give it a whirl and let Alex know what you think.
That’s us for another week. If you know of any JavaFX news that you think is worthy of being included here, please email me and let me know. Catch you all in a weeks time!
Some really great news I’ve had to keep under my hat for the past few months is that the Vancouver Olympics website has chosen JavaFX for a really cool visualization. It is an exceptionally well done application with stunning UI and does a terrific job showing off the potential of JavaFX in data visualization scenarios.
Vancouver Olympics JavaFX Application
Go and check out the application running live. It has data going back many years showing how many metals were won by different countries over time, which athletes won which metals, and so on. It is built and delivered on the publicly shipping release of JavaFX. Really exciting for JavaFX!
I had the honor to be the first official speaker at the first JavaFX user group meeting (of which I am aware!). The Silicon Valley JavaFX JUG, organized by Stephen Chin (one of the authors of Pro JavaFX, which is an excellent book), met this past Wednesday. Google hosted the event and supplied the evening’s pizza, for which I am personally very grateful!
Stephen had setup a streaming feed so people not in the area could follow along, which I thought was really cool. Its always fun to present about JavaFX as it is something I’m passionately interested in. Yes, working on JavaFX is my day job, but if I didn’t really love it and believe in it I wouldn’t be doing it. The thing that energizes me is knowing both what it is that we have built, and what we are building. It is really a fantastic platform. Its a joy to use when building applications and getting better all the time.
Stuart Marks has written up part II of the three-part series on the scenegraph warning message that you have seen in JavaFX1.2. I covered and linked to the first version previously. It really is a terrific read, and details some of the subtle semantics of bind. Stuart always does such an excellent job describing these subtle issues.
In my earlier post on this topic I hinted that we had found a resolution to the issue surrounding the warning message, I hinted further in some of my replies to comments, and I even left it as sort of a cliffhanger as to what the resolution was. So, here’s the resolution.
We’ve decided that when a node is added to a group, that node is automatically removed from the group that previously owned it, if any. (Let’s call this the “auto-remove” feature.) We’ve also decided to turn off the warning message by default, but to have it be enabled optionally, possibly via a system property, for debugging purposes. Finally, we’ve relaxed the enforcement of some scene graph invariants in cases where the group’s content sequence is bound.
During the development of our current release, we kept running into this issue. A couple of us wrote code that we thought was reasonable, yet it surprised us when the warning message came out! We had a few hallway conversations from time to time, but a clear-cut answer never emerged. Finally, we realized that we had to get the interested parties in a room and have a knock-down, drag-out meeting to resolve the issue. And so on October 7, 2009, Amy Fowler, Kevin Rushforth, Richard Bair, and I got into a conference room to decide the issue. Three hours later — with no breaks! — we had decided. Actually, it was a great meeting, without a lot of conflict. There were just a lot of issues to cover. Each of us came into the meeting with our initial opinions, but the issues were so close that I think each one of us switched sides at least once during the meeting.