JavaFX provides functionality to listen to changes of our primitive data types (int, boolean, etc). These are provided as Property classes, for example BooleanProperty and IntegerProperty.

These classes themselves are abstract (cannot be instantiated), but must instead be sub-classed - such as SimpleIntegerProperty and SimpleBooleanProperty.

1
2
3
4
BooleanProperty isAlive = new SimpleBooleanProperty(true);
isAlive.get(); // -> true
isAlive.set(false);
isAlive.get(); // -> false

Listening for change

1
2
3
4
5
6
7
8
IntegerProperty myNumber = new SimpleIntegerProperty(15);

myNumber.addListener((observer, oldValue, newValue) -> {
    System.out.println("myNumber is now: " + newValue);
});

myNumber.set(100);
// :: myNumber is now: 100