WidgetFX 1.1 Release

24 02 2009

I have been busy cranking on the Pro JavaFX book, but thanks to Keith Combs, we have a 1.1 release of WidgetFX.  Some of the new features include:

  • Improved performance and reduces CPU usage
  • Compatibility with the JavaFX 1.1 release (No promise the version numbers will stay in sync into the future.)
  • New, more permissive, open source license (We are now licensed under the new BSD license, which is very commercial friendly.)

The WidgetFX dock will auto-update itself the next time you launch it. Both the dock launch link and the new SDK can be found on the main web site:

Here is a screenshot of the WidgetFX dock running on my desktop with some user written widgets:

WidgetFX 1.1 Release Screenshot

WidgetFX 1.1 Screenshot - How are you feeling today?

Congratulations to Enrique on the new World Smiley Widget (you know you want to vote!).  Also, thanks to Pär and Ludovic for updating the DiskSpace and World Clock widgets, respectively, in record time!  All the widgets shown above are featured on the WidgetFX project website and can be installed with a single click.

Due to the fact that JavaFX 1.1 is not binary compatible with JavaFX 1.0 you will need to recompile your widgets for the new release.  Also, if you use JFXtras make sure to pick up the latest 1.1 compatible version here.

One of the big performance optimizations in this release is to limit the drop shadow effect to the Widget clip if set.  For widgets with a lot of animation, this can dramatically improve performance.  Here is an example from the Clock widget on how to do this:

override var clip = Circle {
    centerX: bind width / 2,
    centerY: bind height / 2,
    radius: bind min(width, height) / 2

Enjoy the new release!

JFXtras 0.3 Release

17 02 2009

The JFXtras 0.3 release is out with full support for JavaFX 1.1, as well as JavaFX MigLayout support.  You can download the latest bits here:


Since JavaFX 1.1 is not binary compatible with the 1.0 JavaFX release, if you are doing any development with JavaFX 1.1 you will need to upgrade to the newly released version 0.3 of JFXtras.  Similarly, if you want to do any development on legacy JavaFX 1.0 applications, you will need to stick with JFXtras 0.2 or earlier.

The major feature in this release is the inclusion of a MigLayout wrapper that gives you all the power of MigLayout from within a native JavaFX syntax (a big thanks to Dean Iverson for making this happen).  Here is an example of Mig Docking in action:

MigLayout Docking Test

MigLayout Docking Test

The intent is to keep both the JFXtras Grid and MigLayout as fully supported options for JavaFX layout.  The choice is yours which one to use!

Some other changes that went into this release as well include:

  • Modified permissions in JFXWorker, JFXException, and JFXDialog from public-init to public-init protected
  • Fixed alwaysOnTop support and added an icon workaround to JFXDialog
  • Deprecated CacheSafeGroup now that the underlying bug has been fixed

This release made it in roughly 5 days total, but only 2 business days after the JavaFX 1.1 Release.  Special thanks to Keith Combs for packaging up the release!  🙂

Migrating to the JavaFX 1.1 Release

14 02 2009

My original post about migrating from the preview release turned out to be quite a lot more popular than I expected, probably due to the sheer amount of changes to deal with.  Fortunately, the amount of change in the JavaFX 1.1 Release is miniscule in comparison. However, you may still run into a few language and API changes that will affect any moderately complicated application.

To start with, the most important thing of note is that the JavaFX 1.1 release is not binary compatible with JavaFX 1.0.  This means that you will have to recompile not only your application, but also all libraries that it depends upon.  (For you JFXtras users out there, we are working on a JavaFX 1.1 compatible release that is already available in source form, and will be shipped Tuesday 2/17)

Once you start compiling your applications, you may trip across some of the following language changes:

  • Variables declared public-init/public-read/def cannot be overriden – My favorite subclassing trick is now gone…  public-init variables can now only be initialized in the object constructor.  If you would like to override a variable in the subclass consider changing the permissions to public-init protected instead. (Thanks to Robert Field for recommending this workaround)
  • Number no longer has double precision – For performance reasons (particularly on mobile devices), Number is now mapped to a Java Float instead.  If you were counting on the additional precision, your application may not function as expected, but you can take advantage of the Double type directly thanks to the additional type support (see below for more information). Read the rest of this entry »