我正在尝试为舞台的某些属性创建ChangeListeners,但我无法弄清楚如何...
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的类型参数”。如果你做的话,感觉就像是“该死的,如果你不这样做,该死的话”。在&lt;&gt;之后删除括号给出了一大堆错误...
编辑:进口:
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 :(得分:6)
您可能已经从Swing API(它不采用类型参数)而不是JavaFX ChangeListener
导入了ChangeListener
。确保输入正确:
import javafx.beans.value.ChangeListener ;
答案 1 :(得分:0)
使用lambda表达式删除所有难以理解的代码以及导入:
mainScene.widthProperty ().addListener ( (ObservableValue <? extends Number> observableValue , Number oldSceneWidth, Number newSceneWidth) -> System.out.println("width: "+ newSceneWidth));
如果您不需要newSceneWidth
,可以将其缩短。
像:
mainScene.widthProperty ().addListener (e -> System.out.println("SceneWidth Changed"));