需要扩展类来侦听抽象类javaFX属性中的更改

时间:2015-12-01 15:55:26

标签: event-handling javafx-8 abstract-class

我想构建一个抽象类,并且我希望指定某些JavaFX属性由扩展类来监听/处理。例如,我有:

-abstract类CircleX,它有一个layoutXProperty ......

然后我做: class MyCircle扩展了CircleX

我想确保MyCircle实现了 layoutXProperty()。addListener(new ChangeListener ....)

我知道我可以制作需要覆盖的抽象方法。但有没有办法具体说明这些方法应该对哪些变量进行操作?

1 个答案:

答案 0 :(得分:2)

尝试以下方法:

public abstract class CircleX {

    private final DoubleProperty layoutX ;

    public CircleX() {
        layoutX = new SimpleDoubleProperty();
        layoutX.addListener((obs, oldValue, newValue) ->
            layoutXUpdated(oldValue, newValue));
    }

    public abstract void layoutXUpdated(Double oldLayoutX, Double newLayoutX) ;

    public DoubleProperty layoutXProperty() {
        return layoutX ;
    }

    public final double getLayoutX() {
        return layoutXProperty().get();
    }

    public final void setLayoutX(double layoutX) {
        layoutXProperty().set(layoutX);
    }
}

在这里,您可以在超类中添加一个调用抽象方法的侦听器。然后,任何子类都必须实现抽象方法,并在属性更改时调用该方法。