类型ChangeListener不接受参数

时间:2014-10-05 16:30:21

标签: java parameters javafx arguments changelistener

我正在尝试为舞台的某些属性创建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.*;

2 个答案:

答案 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"));