SkinBehaviour and JavaFX 8?

Jonathan Giles jonathan.giles at oracle.com
Fri Feb 1 01:17:12 PST 2013


Tobi,

To start with I need to be clear that in JavaFX 2.x SkinBase and 
BehaviorBase were private APIs (that is, they both resided in com.sun.* 
packages). This means that they shouldn't have been used by third 
parties. Instead, third parties should have been building from the Skin 
interface. Of course, most people used SkinBase, and whenever I went to 
conferences I would promise people that the day of reckoning would come 
when I broke them. Well, that day is fast approaching.... :-)

JavaFX 8.0 brings SkinBase to public API, but we are not prepared to 
bring BehaviorBase along with it just yet. This is because the concept 
of a behavior needs to be fleshed out further in a number of directions, 
including:

  * Making behaviors less opaque (i.e. more easily accessible to 
developers via the control - in other words bringing the concepts of 
actions and input/action maps to JavaFX),
  * Improving toolability of behaviors / actions (so tools such as Scene 
Builder can know that a TextField offers cut/copy/paste, for example),
  * Making it possible for developers to override and provide custom 
input mappings / actions more easily.

It's late here and I'm sure there were other reasons for wanting more 
bake time on behaviors, but this was the general gist of things.

What this means is that SkinBase in JavaFX 8.0 has no notion whatsoever 
of a behavior for specifying key/mouse input event handling. In other 
words, your code will need to manually handle keyboard and mouse 
interactions. In the future I am sure we will get to this point, but we 
are not there yet.

Finally, don't look at how we in the UI controls team do it. I wouldn't 
want you to see the (very private!!!) BehaviorSkinBase class that is 
essentially a drop-in replacement for the old SkinBase class. Of course, 
if you did see this I'm sure you wouldn't use it as it is private API 
that I (once again) promise to change in the future when we resolve the 
behavior discussion.

-- Jonathan

On 1/02/2013 9:38 p.m., Tobias Bley wrote:
> Hi,
>
> there seams to be some changes from JavaFX 2 to JavaFX8 concerning SkinBase and SkinBehavior. In JFX2 you could call the constructor from SkinBase with a component (e.g. slider) and a skin behavior. In JFX8 it's not possible any more, I could only call the constructor of SkinBase with the control, not with the SkinBehavior.
>
> So my question is: How do I have to specify the SkinBehavior in JavaFX8?
>
> Best regards,
> Tobi
>



More information about the openjfx-dev mailing list