2013-01-13 66 views
3

我尝试添加changlistener到Scene.getWidth(),所以我可以检测到一个调整大小。这是我试图添加侦听器的代码snipplet。不知道如何使用changlistener JavaFX中

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

它给我followig错误。

./GraphFX.java:49: error: is not abstract and does not override abstract method changed(ObservableValue,Double,Double) in ChangeListener scene.getWidth().addListener(new ChangeListener() {

^
./GraphFX.java:49: error: double cannot be dereferenced scene.getWidth().addListener(new ChangeListener() { ^2 errors

回答

2

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

你可以使用场景widthProperty()方法返回ReadOnlyDoubleProperty

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跟踪scenewidth变化

代码:

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

所以我会怎样去绑定一个矩形的宽度到场景的widthProperty? – user1958884

+0

rectangle.widthProperty()。bind(scene.widthProperty()); – invariant

+0

谢谢,这工作完美! – user1958884