1. 程式人生 > >JavaFX Property及監聽

JavaFX Property及監聽

JavaFX可通過Property監聽,做出自己的操作,在圖形的Property監聽中應用較多。

// Double監聽
方式一(可知詳細變化):
        DoubleProperty doubleProperty = new SimpleDoubleProperty(初始化的double值);
        doubleProperty.addListener(this::doublePropertyChange);
        private void doublePropertyChange(ObservableValue<? extends Number>                                     observable, Number oldValue, Number newValue){
        double value = (double)newValue;
        }
方式二(可知詳細變化):
doubleProperty.addListener(new ChangeListener<Number>() {
    @Override
    public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
    //操作
    }
});
可簡化為
doubleProperty.addListener((ObservableValue<? extends Number> observable, Number oldValue, Number newValue) -> {
	double value = (double)newValue;
});
方式三(可知變化了):		
ReadOnlyDoubleWrapper doubleProperty = new ReadOnlyDoubleWrapper(初始化的double值);
doubleProperty.getReadOnlyProperty().addListener(o -> doSomething());
private void doSomething(){
		
}

圖形的屬性可繫結一個Property,在Property變化時,屬性也跟著變化,可廣泛應用於動畫。

Button myButton = new Button();
myButton.setText("Test");
SimpleDoubleProperty simpleDoubleProperty = new SimpleDoubleProperty(100);
myButton.translateXProperty().bind(simpleDoubleProperty);
simpleDoubleProperty.set(0);
// 想通過setTranslateX方式改變translateX屬性,必須解綁
myButton.unbind();
myButton.setTranslateX(50);