[英]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.