gpt4 book ai didi

Javafx 将特定节点移动到 AnchorPane 的前面

转载 作者:行者123 更新时间:2023-11-30 02:10:38 27 4
gpt4 key购买 nike

这似乎是一个简单的问题,但我还没有找到相关的答案。

我正在创建一个简单的 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;

最佳答案

在这里回答我自己的问题。

我以不同的方式思考这个问题。我总是可以在绘制正方形时将其移动到后面,而不是总是在绘制圆圈时将其移动到前面。

这会将新形状(正方形)添加到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());

关于Javafx 将特定节点移动到 AnchorPane 的前面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50196196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com