Не отображаются элементы на панели внутри панели

Пишу векторный холст на JavaFX (векторная графика, просто фигуры на холсте отображаются): ну чтобы можно было по нему перемещаться и приближать.
Так как при translate положение левого верхнего угла node меняется, и он больше не реагирует на нажатия, решил внутри самого холста сделать панель, на которой как раз и будет всё отображаться.
Внутри VectorCanvas находится VectorCanvasContent.
На VectorCanvasContent добавляются линии, но почему-то их не видно (хотя они есть, я добавил слушатель, который выводит "!!!" при нажатии на них, и проверил).
Если рисовать линии на самом холсте, то они видны.
В чём проблема?

public class VectorCanvas extends Pane {


    public class VectorCanvasContent extends Pane {


//        public final ChangeListener<Number> widthChangeListener
//                = (observable, oldValue, newValue) -> setWidth(newValue.doubleValue());
//        public final ChangeListener<Number> heightChangeListener
//                = (observable, oldValue, newValue) -> setHeight(newValue.doubleValue());


        public VectorCanvasContent() {
//            VectorCanvas.this.widthProperty().addListener(widthChangeListener);
//            VectorCanvas.this.heightProperty().addListener(heightChangeListener);
//            widthProperty().addListener((observable, oldValue, newValue)
//                    -> System.out.println("Content: width: " + newValue));
//            heightProperty().addListener((observable, oldValue, newValue)
//                    -> System.out.println("Content: height: " + newValue));
        }
    }


    public static final Consumer<VectorCanvas> DEFAULT_DRAWER = canvas -> {
        Line[] lines = {
                new Line(0, 0, canvas.getWidth(), 0),
                new Line(canvas.getWidth(), 0, canvas.getWidth(), canvas.getHeight()),
                new Line(canvas.getWidth(), canvas.getHeight(), 0, canvas.getHeight()),
                new Line(0, canvas.getHeight(), 0, 0),
                new Line(0, 0, canvas.getWidth(), canvas.getHeight()),
                new Line(0, canvas.getHeight(), canvas.getWidth(), 0)
        };
        for (Line line : lines) {
            line.setStrokeWidth(30);
            line.setStroke(Color.RED);
            line.setFill(Color.RED);
            line.setOnMouseClicked(new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent mouseEvent) {
                    System.out.println("!!!");
                }
            });
        }
        canvas.drawAll(lines);
    };

    private Consumer<VectorCanvas> drawer = DEFAULT_DRAWER;

    public final VectorCanvasContent content = new VectorCanvasContent();


    public VectorCanvas() {
        this(DEFAULT_DRAWER);
    }

    public VectorCanvas(Consumer<VectorCanvas> drawer) {
        this.drawer = drawer;
        getRealChildren().add(content);
        draw();
    }


    public void clear() {
        getChildren().clear();
    }
    public void draw() {
        if (drawer != null)
            drawer.accept(this);
    }
    public void redraw() {
        clear();
        draw();
    }


    @Override
    public ObservableList<Node> getChildren() {
        return content.getChildren();
    }
    @Override
    public ObservableList<Node> getChildrenUnmodifiable() {
        return content.getChildrenUnmodifiable();
    }


    private ObservableList<Node> getRealChildren() {
        return super.getChildren();
    }
    private ObservableList<Node> getRealChildrenUnmodifiable() {
        return super.getChildrenUnmodifiable();
    }


    public void draw(Shape shape) {
        getChildren().add(shape);
    }
    public void drawAll(Shape... shapes) {
        getChildren().addAll(shapes);
    }
}

Ответы (1 шт):

Автор решения: Имя Фамилия

Оказывается, нельзя переопределить методы getChildren() и getChildrenUnmodifiable(), чтобы вернуть в них детей другого узла.

Это сбивает с толку JavaFX.

→ Ссылка