2013-04-23 20 views
0

我想添加一個偵聽ScenewidthProperty,我想知道我做錯了,這裏是我的代碼:添加類型的監聽器,場景的寬度財產

ChangeListener<Double> widthListener = new ChangeListener<Double>() { 

    @Override 
    public void changed(ObservableValue<? extends Double> observable, Double oldValue, Double newValue) { 
     System.out.println("width changed"); 
    } 

};   

foo.getScene().widthProperty().addListener(dimensionsListener); 

對於用addListener行這給我出現以下錯誤:

The method addListener(ChangeListener<? super Number>) in the type ObservableValue<Number> is not applicable for the arguments (ChangeListener<Double>) 

Double是Number的子類,所以我的代碼出了什麼問題?謝謝:-)

+0

你添加的監聽器的類型必須是一個超類型的數字:Number的任何父代。 Smth,比Number更常見。 Double是一個子類,不是超類。 – 2013-04-23 18:47:36

+0

http://stackoverflow.com/questions/3847162/java-generics-super-keyword – 2013-04-23 18:51:32

回答

0

爲什麼不使用數字呢?這個作品:

scene.widthProperty().addListener(new ChangeListener<Number>() { 
      @Override 
      public void changed(ObservableValue<? extends Number> observableValue, Number number, Number number2) { 
       System.out.println("changed"); 
      } 
     });