3

我正在尝试向 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 场景中的抽象方法 changed(ObservableValue,Double,Double).getWidth().addListener(new ChangeListener() {

^
./GraphFX.java:49: 错误:无法取消引用双精度 scene.getWidth().addListener(new ChangeListener() { ^ 2 个错误

4

1 回答 1

2

scene.getWidth() 返回一个双原语而不是一个对象,这就是它不能被取消引用的原因。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);
        }

   });

或者,您可以通过绑定场景宽度属性来跟踪场景宽度的变化

代码 :

DoubleProperty sceneWidth = new SimpleDoubleProperty();
sceneWidth.bind(scene.widthProperty());
于 2013-01-13T18:52:38.917 回答