簡體   English   中英

Javafx將特定節點移到AnchorPane的前面

[英]Javafx move specific node to front of AnchorPane

這似乎是一個簡單的問題,但我還沒有找到相關的答案。

我正在創建一個簡單的Javafx應用程序,並在單擊時創建可以拖動的節點。

我想確保始終在AnchorPane頂部繪制特定類型的Node(圓形)。

我認為這是所有相關的代碼,但是如果需要,我可以包括其余的代碼。

我該如何實現這種行為?

@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;

在這里回答我自己的問題。

我想到了另一種方式。 不必總是在繪制圓時將圓移到前面,而是可以在繪制正方形時始終將圓移到后面。

這會將新形狀(正方形)添加到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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM