Re: JavaFX14/Listener not called

2020-08-20 Thread Nir Lisker
Hi Peter,

This is a development mailing list, not a help list. I suggest you ask
questions on a help site.

The reason you see this difference is that you're using an invalidation
listener which uses lazy evaluation, so in your second example it is not
updated because it is not used in the printing method. Read the
documentations/tutorial of listeners and observables.

- Nir

On Thu, Aug 20, 2020 at 5:19 PM Petr Nemecek  wrote:

> Dear all,
>
>
>
> could somebody explain me, please, why the output differs for CODE-1 and
> CODE-2 see below? I would expect the listener to be called four times in
> both cases.
>
>
>
> I believe there's trivial answer for that, but I'm not able to find it by
> myself, probably due to the hot weather here in Prague, CZ.
>
>
>
> Many thanks,
>
> Petr
>
>
>
> ***
>
> CODE-1
>
> IntegerProperty property = new SimpleIntegerProperty();
>
>
>
> property.addListener((o) -> {
>
> System.out.println("value changed to " + property.get() + " ... " +
> System.currentTimeMillis());
>
> });
>
>
>
> for (int i = 0; i < 5; i++) {
>
> property.set(i);
>
> }
>
>
>
> OUTPUT-1
>
> value changed to 1 ... 1597932211288
>
> value changed to 2 ... 1597932211293
>
> value changed to 3 ... 1597932211293
>
> value changed to 4 ... 1597932211294
>
>
>
> ***
>
> CODE-2
>
> IntegerProperty property = new SimpleIntegerProperty();
>
>
>
> property.addListener((o) -> {
>
>System.out.println("value changed" + " . " +
> System.currentTimeMillis());
>
> });
>
>
>
> for (int i = 0; i < 5; i++) {
>
>  property.set(i);
>
> }
>
>
>
> OUTPUT-2
>
> value changed ... 1597932237151
>
> ***
>
>


JavaFX14/Listener not called

2020-08-20 Thread Petr Nemecek
Dear all,

 

could somebody explain me, please, why the output differs for CODE-1 and
CODE-2 see below? I would expect the listener to be called four times in
both cases.

 

I believe there's trivial answer for that, but I'm not able to find it by
myself, probably due to the hot weather here in Prague, CZ.

 

Many thanks,

Petr

 

***

CODE-1

IntegerProperty property = new SimpleIntegerProperty();



property.addListener((o) -> {

System.out.println("value changed to " + property.get() + " ... " +
System.currentTimeMillis());

});



for (int i = 0; i < 5; i++) {

property.set(i);

}

 

OUTPUT-1

value changed to 1 ... 1597932211288

value changed to 2 ... 1597932211293

value changed to 3 ... 1597932211293

value changed to 4 ... 1597932211294

 

***

CODE-2

IntegerProperty property = new SimpleIntegerProperty();



property.addListener((o) -> {

   System.out.println("value changed" + " . " + System.currentTimeMillis());

});



for (int i = 0; i < 5; i++) {

 property.set(i);

}

 

OUTPUT-2

value changed ... 1597932237151

***