Funny, this was one of the first things that I asked when I came to FX.
I believe we are using the same terminology as the disabled property on
DOM nodes. At this point, we cannot change it and I'm not thrilled
about adding an alias but let's discuss this in the JIRA.
Steve
On 2014-01-15 6:43 AM, Randahl Fink Isaksen wrote:
I keep thinking we need to fix the disableProperty / disabledProperty mess, so
I have created a Jira issue, which I hope you will all vote for:
Please see the description below
Randahl
———
From https://javafx-jira.kenai.com/browse/RT-35349
I know I am late to the game with this request, but please read this in full –
there is a point to this.
I have used JavaFX since the early access days, and all the time I keep
thinking that the disableProperty and disabledProperty of Node work in a
counter-intuitive manner.
Like most other developers, I typically use names of boolean properties to express the positive state of something, as in
"is it complete" or "is it ready". Usually, JavaFX property names also follow this idea, e.g. "is it
visible", "is it managed", "is it pressed" and so on.
However, one property in JavaFX is reversed, and that leads to confusion. When you decide wether
"is it enabled" for a Node, you do so by controlling the opposite, namely "is it
disabled". To add to that confusion, there is both disableProperty and a disabledProperty.
I suggest improving JavaFX to follow almost all other GUI frameworks (including
Swing), by introducing an enabledProperty. Such a property could be implemented
in a backwards compatible manner by keeping the existing disableProperty but
marking it as deprecated.
With an enabledProperty, there are literally thousands of lines of code in my
application that would be much more readable. Today I write something like this
to make a continue button be enabled when a form is complete:
continueButton.disableProperty().bind(form.validProperty().not());
– Note that above my form's validProperty expresses something positive, that the form is
valid, while the button's enabled property is expressed as something negative, namely
"is it NOT enabled" using the disableProperty. This requires me to use the
not() method.
With the new enabledProperty() I could write code, that was more easy to read:
continueButton.enabledProperty().bind(form.validProperty());
I hope it is evident to everyone that this line is much more readable, and I
think the enabledProperty would make the JavaFX API easier to use – also for
newcomers learning to program JavaFX.