Search code examples
javaparametersjavafxargumentschangelistener

Type ChangeListener does not take parameters


I'm trying to create ChangeListeners for some properties of my stage, but I can't figure out how to...

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

gives the error "type ChangeListener does not take parameters".

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

gives "cannot infer type arguments for ChangeListener". It feels like a "damned if you do, damned if you don't" situation to me. Removing the parentheses after the <> gives a boatload of errors...

EDIT: Imports:

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.*;

Solution

  • You have likely imported the ChangeListener from the Swing API (which doesn't take type parameters) instead of the JavaFX ChangeListener. Make sure you have the correct import:

    import javafx.beans.value.ChangeListener ;