JavaFX Property及監聽
阿新 • • 發佈:2019-01-01
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);