Java tutorial
import javafx.beans.binding.Bindings; import javafx.beans.binding.ObjectBinding; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.effect.Light; import javafx.scene.effect.Lighting; import javafx.scene.paint.Color; public class Main { public static void main(String[] args) { ObjectProperty<Lighting> root = new SimpleObjectProperty<Lighting>(); final ObjectBinding<Color> colorBinding = Bindings.select(root, "light", "color"); colorBinding.addListener(new ChangeListener<Color>() { @Override public void changed(ObservableValue<? extends Color> observableValue, Color oldValue, Color newValue) { System.out.println(oldValue + "new = " + newValue); } }); Light firstLight = new Light.Point(); firstLight.setColor(Color.BLACK); Light secondLight = new Light.Point(); secondLight.setColor(Color.WHITE); Lighting firstLighting = new Lighting(); firstLighting.setLight(firstLight); root.set(firstLighting); firstLighting.setLight(firstLight); firstLight.setColor(Color.RED); } }