接受特定对象类型的 JavaFX 组

mel*_*ldi 3 javafx

JavaFX 中是否有一种方法可以创建一个扩展Group并将其限制为仅接受Shape对象作为子对象的类?

Jam*_*s_D 5

考虑创建一个包装类而不是子类。类似的东西

public class ShapeGroup {

    private final Group group = new Group() ;

    public void addShape(Shape s) {
        group.getChildren().add(s);
    }

    public void removeShape(Shape s) {
        group.getChildren().remove(s);
    }

    // other methods you want to expose, implemented similarly...

    public Parent asParent() {
        return group ;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在您可以按如下方式使用它:

ShapeGroup shapeGroup = new ShapeGroup();
shapeGroup.addShape(new Circle(50, 50, 20));
shapeGroup.addShape(new Rectangle(20, 20, 30, 30));
// ...
Scene scene = new Scene(shapeGroup.asParent());
// etc..
Run Code Online (Sandbox Code Playgroud)