[REVIEW REQUEST] RT-19713 Add API to JavaFX to allow for setting preferred user agent stylesheet

Jonathan Giles jonathan.giles at oracle.com
Wed Nov 21 13:29:22 PST 2012

I think the comment in Jaspers code is very important to pull out and 
highlight, as what he says in the javadoc comment is exactly what I 
want. In short, my personal preference is to push for JavaFX to upgrade 
to new user agent stylesheets _by default_. I mentioned this issue in 
RT-19713, but I'm keen to discuss this more widely.

The benefit of this approach is that it would prevent the issue we had 
in Swing where the default look remained as Metal forever - which didn't 
really help Swing take the world by storm. Many months ago Jasper 
started investigating a new CSS style and I was helping to give 
feedback. The reason I mention this is that immediately the new style 
made the current Caspian style look dated and heavy, in my opinion 
(which is pretty impressive as Caspian doesn't look bad by any means). I 
would upgrade my personal applications to the new look in a heartbeat, 
and I would love to have all JavaFX applications upgrade to this as well 
- rather than be stuck on Caspian.

Of course, just because we update by default doesn't mean that this is 
what people necessarily want for their software - they want to be 
certain we don't break their apps when the styles change. To allow for 
this, developers would have to explicitly state (using the API Jasper 
has outlined below) what style they want to use.

In other words, I would like us to switch from opt-in to opt-out (of new 
styles), and I'd be very keen to hear feedback on this in conjunction 
with the feedback Jasper is seeking.

-- Jonathan

On 22/11/2012 10:09 a.m., Jasper Potts wrote:
> Hi All,
> I would like to add API to Application to add the ability to set the default user agent stylesheet. So far JavaFX has had a default stylesheet of capsian.css hard coded for all applications. In 8 if we have time I would like to have a new stylesheet that you can use as alternative to caspian.css. This would also open the platform to easy use of 3rd party look and feels.
> public abstract class Application {
> ….
>      /**
>       * Set the default user agent stylesheet. This is used to provide default
>       * styling for all ui controls and other nodes. Each release of JavaFX may
>       * have a new default value for this so if you need to guarantee consistency
>       * you will need to call this method and choose what default you would like
>       * for your application.
>       *
>       * @param url The URL to the stylesheet as a String.
>       */
>      public static void setDefaultUserAgentStylesheet(String url) ….
> …..
> }
> This has been a much requested feature for a long time:
> http://javafx-jira.kenai.com/browse/RT-8054
> http://javafx-jira.kenai.com/browse/RT-5753
> http://javafx-jira.kenai.com/browse/RT-19713
> There have been some workarounds for specific use cases and a proposed solution for a Theme class but none have solved the root problem of being able to change the default user agent stylesheet.
> Thanks
> Jasper

More information about the openjfx-dev mailing list