当前位置: 首页 > 知识库问答 >
问题:

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

宗波涛
2023-03-14

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

我正在创建一个简单的Javafx应用程序,并创建可以拖动的节点。

我想确保一个特定类型的节点(圆)总是画在锚点的顶部。

我认为这是所有相关的代码,但如果需要,我可以包含其余的代码。

如何才能实现这种行为?

@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个答案

姬魁
2023-03-14

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

我想到了另一种方式。在绘制时,我不必总是将圆圈移动到前面,而是在绘制正方形时始终将正方形移动到后面。

这会将新形状(正方形)添加到主播中,然后我们可以获得最新项目的索引(刚刚绘制的正方形),并将其移到后面。

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());
 类似资料:
  • 问题内容: 我正在使用SceneBuilder 8.0.0和JavaFX8。 我有和附加到。 当应用程序启动,并连接到。 如何删除这些节点之一? (我只知道clear()方法,该方法将从中删除所有节点)。谢谢。 问题答案: 在JavaFX中,可以使用以下命令简单地从父节点(例如AnchorPane)中删除节点 参考 所以,如果你有一个直接引用这些节点,你可以使用下面的代码删除来自: 抬头 如果由于

  • 我有这个按钮,当我想添加图像动态到我的锚窗格,但目前它没有工作的预期。我试图在JavaFX标签中加载一个图像,下面是我的代码。 FXMLDocumentController.java fxmlDocument.fxml 错误 null 我正在使用netbeans IDE

  • 本文向大家介绍javafx AnchorPane,包括了javafx AnchorPane的使用技巧和注意事项,需要的朋友参考一下 示例 AnchorPane 是一种布局,允许将内容放置在距离其侧面特定距离的位置。 有4种设置方法和4种获取距离的方法AnchorPane。这些方法的第一个参数是child Node。设置器的第二个参数是Double要使用的值。该值可以null指示给定边没有约束。 s

  • 我想用XSLT转换XML文档。按名称和属性匹配的节点及其子节点应嵌套/移动到新节点中。 从转变 到 但是我的XSLT工作不好。您有什么提示吗,XSLT文件有什么问题? 非常感谢你 安德烈亚斯 我的XSLT 输出: 我的源XML文件 我希望在转换后的输出中将v:data节点及其子节点嵌套到一个新节点中。但只有属性名为“Custon”的v:data节点。转换后的XML文档应该如下所示 如果我从XSLT

  • 我在运行时无法将节点添加回。 我想做的是,当用户点击一个按钮时,当前节点存储在

  • 下图应该有助于尽可能清楚地说明这一点。 我有三个窗格A、B和C。B和C是A的子窗格,B有自己的子窗格(白色框)。通过拖放,我可以将B的孩子移动到B中的任何位置,并能够再次拾取他们,但如果拖到C,甚至是A的一小部分,他们可以被丢弃,但不能再次拾取。 我使用基本控制。要拖动,我使用imgView.setOnMouseDragged。 那么,我如何才能从一个窗格A拖动到窗格B或C,并且仍然允许拾取和拖动