Javafx перемещает определенный узел в начало AnchorPane - PullRequest
0 голосов
/ 06 мая 2018

Это кажется простым вопросом, но я пока не смог найти подходящий ответ.

Я создаю простое приложение Javafx и создаю узлы по щелчку, которые можно перетаскивать.

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

Я думаю, что это весь соответствующий код, но я могу включить остальные при необходимости.

Как мне добиться этого поведения?

@Override
public void start(Stage stage) throws Exception {
    root = new AnchorPane();
    scene = new Scene(root, 800, 800);
    scene.setFill(Color.WHITE);

    scene.setOnMouseDragged(mouseHandler);
    scene.setOnMouseReleased(mouseHandler);
    scene.setOnMousePressed(mouseHandler);

    stage.setScene(scene);
    stage.setTitle("Shapes");
    stage.show();

}

Обработчик событий

EventHandler<MouseEvent> mouseHandler = new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent mouseEvent) {
        switch (eventName) {
        case ("MOUSE_PRESSED"):
            getCurrentShape(clickPoint);
            if (!shapeSelected) {
                if (clickType.equals("SECONDARY")) { // Draw a Square
                    ShapeComponent newShape = ShapeGenerator.generateRandomSquare(clickPoint);
                    components.add(newShape);
                    root.getChildren().add(newShape.getShape());
                } else if (clickType.equals("PRIMARY")) { // Draw a Circle
                    ShapeComponent newShape = ShapeGenerator.generateCircle(clickPoint);
                    components.add(newShape);
                    /* MOVE NODE TO FRONT */
                    root.getChildren().add(newShape.getShape());
                }
            }
            break;

1 Ответ

0 голосов
/ 06 мая 2018

Собираюсь ответить на мой собственный вопрос здесь.

Я думал об этом по-другому. Вместо того, чтобы всегда перемещать круг вперед, когда он нарисован, я всегда могу переместить квадраты назад, когда они нарисованы.

Это добавит новую форму (квадрат) к AnchorPane, а затем мы сможем получить индекс самого последнего элемента (только что нарисованный квадрат) и переместить его назад.

root.getChildren().add(newShape.getShape());
root.getChildren().get(root.getChildren().size() - 1).toBack(); // Move Square to back of AnchorPane

Или, как указано в комментариях.

root.getChildren().add(0, newShape.getShape());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...