Regression: JavaFX 8 doesn't call listeners in Skin implementations

Stephen F Northover steve.x.northover at oracle.com
Fri Jan 3 08:23:03 PST 2014


Hi Florian,

I would enter a JIRA with the steps to make the problem happen and the 
smallest possible example code that shows it.

Thanks,
Steve

On 2014-01-02 5:10 PM, Florian Brunner wrote:
> I also tried to add a listener directly to control.getDockingSplitPaneChildren() in case the issue is with Bindings.bindContent, but also this listener doesn't get called.
>
> member:
>
>      private final ListChangeListener<DockingSplitPaneChildBase> dockingSplitPaneChildrenListener = new ListChangeListener<DockingSplitPaneChildBase>() {
>          @Override
>          public void onChanged(Change<? extends DockingSplitPaneChildBase> change) {
>              System.out.println("Change!");
>          }
>      };
>
>   ...
>
> in constructor:
>
>   control.getDockingSplitPaneChildren().addListener(dockingSplitPaneChildrenListener);
>
> -Florian
>
> Am Donnerstag, 2. Januar 2014, 22.51:23 schrieb Florian Brunner:
>> Hi,
>>
>> I'm in the process of upgrading Drombler FX to JavaFX 8 and hit another regression issue: JavaFX 8 doesn't call listeners in my Skin implementation (it used to work with JavaFX 2.x !)
>>
>> Here is the Skin implementation:
>>
>> https://sourceforge.net/p/drombler/drombler-fx/ci/default/tree/drombler-fx-core-docking/src/main/java/org/drombler/fx/core/docking/impl/skin/DockingSplitPaneSkin.java
>>
>> When I add something to
>>
>> control.getDockingSplitPaneChildren()
>>
>> what should trigger the listeners, then with a debugger I can trace the call up to the WeakListChangeListener where on line 87 the listener is null.
>>
>> Note that I'm not using a WeakListChangeListener explicitly - JavaFX 8 must have created this somewhere and for some reason the listener from the Skin got lost!
>>
>> I also tried to keep a reference to my listeners as a member variable in the Skin implementation, but this didn't work either.
>>
>> I haven't filed an issue yet because I guess there is already a new way how to solve this.
>>
>> Note that I would like to solve this first with this "basic" Skin implementation and not with the new SkinBase class just yet, as I'm not familiar with that new class yet. One refactoring step at a time. ;-)
>>
>> -Florian
>>
>>



More information about the openjfx-dev mailing list