2014-10-05 22 views
1

我想创造我的舞台的一些性质ChangeListeners,但我无法弄清楚如何...类型的ChangeListener不带参数

mainScene.widthProperty().addListener(new ChangeListener<Number>() { 
    @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) { 
     System.out.println("Width: " + newSceneWidth); 
    } 
}); 

给出了错误“类型的ChangeListener不采取参数“。

mainScene.widthProperty().addListener(new ChangeListener<>() { 
     @Override public void changed(ObservableValue<? extends Number> observableValue, Number oldSceneWidth, Number newSceneWidth) { 
      System.out.println("Width: " + newSceneWidth); 
     } 
    }); 

给出“无法推断出ChangeListener的类型参数”。这感觉就像是一个“该死的,如果你这样做,该死的,如果你没有”的情况给我。在<>给出了错误的一大堆......

编辑后删除括号:进口:

import javafx.application.Application; 

import javafx.stage.*; 

import javafx.scene.*; 
import javafx.scene.layout.*; 
import javafx.scene.image.*; 
import javafx.scene.paint.*; 
import javafx.beans.*; 
import javafx.beans.property.*; 

import javafx.geometry.*; 
+0

您可能有错误的导入语句。 – 2014-10-05 16:36:43

+0

@James_D你知道哪一个会是正确的吗?我可以编辑我的帖子以包含导入。 – LilSweden 2014-10-05 16:42:37

+1

这些都不会导入'ChangeListener',除非我遗漏了一些东西。你需要'import javafx.beans.value.ChangeListener;'。确保你没有Swing中的'ChangeListener'(它没有类型参数)。 – 2014-10-05 17:05:54

回答

6

你可能已经进口从Swing API的ChangeListener(不带类型参数),而不是的JavaFX ChangeListener。请确保您有正确的进口:

import javafx.beans.value.ChangeListener ; 
0

摆脱一切,通过使用lambda表达式很难理解的代码以及实行进口:

mainScene.widthProperty().addListener ((ObservableValue <? extends Number> observableValue , Number oldSceneWidth, Number newSceneWidth) -> System.out.println("width: "+ newSceneWidth)); 

你可以使它更短,如果你不需要newSceneWidth。 Like:

mainScene.widthProperty().addListener (e -> System.out.println("SceneWidth Changed")); 
相关问题