不了解如何在JavaFX中使用changlistener

时间:2013-01-13 15:24:22

标签: resize listener javafx scene

我正在尝试向Scene.getWidth()添加一个changlistener,以便我可以检测到调整大小。这是我试图添加监听器的代码片段。

scene.getWidth().addListener(new ChangeListener<Double>() {
    public void changed(ObservableValue<? extends Double> ov,double old_val, double new_val) {
        System.out.println(new_val);
    }
});

它给了我跟随错误。

  

./ GraphFX.java:49:错误:不是抽象的   不会覆盖ChangeListener中更改的抽象方法(ObservableValue,Double,Double)         scene.getWidth()。addListener(new ChangeListener(){

     

^
./GraphFX.java:49:错误:double无法解除引用         scene.getWidth()。addListener(new ChangeListener(){                         ^ 2错误

1 个答案:

答案 0 :(得分:2)

scene.getWidth()返回一个double原语而不是一个对象,这就是为什么它不能被解除引用。public final double getWidth()

您可以使用返回ReadOnlyDoubleProperty

的场景widthProperty()方法
 scene.widthProperty().addListener(new ChangeListener() {
        @Override
        public void changed(ObservableValue ov, Object t, Object t1) {
         double value = (double) t1;
            System.out.println("Scene Width :" + value);
        }

   });

或者,您可以通过仅绑定场景widthproperty来跟踪场景宽度变化

代码:

DoubleProperty sceneWidth = new SimpleDoubleProperty();
sceneWidth.bind(scene.widthProperty());