@Override
    public void start(Stage primaryStage)
    {
        //eigen getter & setter
        DoubleProperty a = new SimpleDoubleProperty(5);
        System.out.println("De waarde van a is :" + a.get());
        a.set(2);
        System.out.println("De waarde van a is nu : " + a.get());

        System.out.println();

        //listeners toevoegen
        StringProperty name = new SimpleStringProperty("Jan");
        name.addListener(new InvalidationListener()
        {

            @Override
            public void invalidated(Observable o)
            {
                System.out.println("Name is aangepast");
            }
        });

        name.addListener(new ChangeListener<String>()
        {

            @Override
            public void changed(ObservableValue<? extends String> ov, String oldValue, String newValue)
            {
                System.out.println("Name is aangepast van " + oldValue + "naar " + newValue);
            }
        });
        name.set("Piet");
        name.set("Mieke");

        System.out.println();

        IntegerProperty b = new SimpleIntegerProperty(2);
        NumberBinding c = b.add(3).multiply(2); // bindings via fluent api
        System.out.println("c begint op " + c.intValue());
        b.set(3);
        System.out.println("c is nu " + c.intValue());

        //bindings maken
        IntegerProperty d = new SimpleIntegerProperty(2);
        IntegerProperty e = new SimpleIntegerProperty(3);
        NumberBinding f = Bindings.when(d.greaterThan(e)).then(d).otherwise(e);
        System.out.println("f begint op" + f.intValue());
        d.set(4);
        System.out.println("f is nu" + f.intValue());

        System.out.println();

        final IntegerProperty g = new SimpleIntegerProperty(1);
        BooleanBinding isgEven = new BooleanBinding()
        {

            
            {
                super.bind(g);
            }

            @Override
            protected boolean computeValue()
            {
                return g.get() % 2 == 0;
            }
        };

        System.out.println("is g even ?" + isgEven.get());

        System.out.println("is g nu even?" + isgEven.get());

        ObservableList<String> namen = FXCollections.observableArrayList();
        namen.addListener(new ListChangeListener<String>()
        {

            @Override
            public void onChanged(ListChangeListener.Change<? extends String> change)
            {
                while (change.next())
                {
                    if (change.wasAdded())
                    {
                        System.out.println("zijn toegevoegd : " + change.getAddedSubList());
                    }
                    if (change.wasRemoved())
                    {
                        System.out.println("zijn verwijderd : " + change.getRemoved());
                    }
                }
            }
        });

        namen.addAll("Jan", "Piet");
        namen.remove("Piet");

        Platform.exit();
    }