2

我正在绘制各种 Rectangle 节点,我希望它们能够在屏幕上拖动。

我的代码目前是这样的:

  stage = new Stage {
    scene = new Scene(1100, 700) {
      root = new BorderPane {
        center = new Group() {
          fill = Color(0.22, 0.22, 0.22, 1.0)
          children = List(
            new Rectangle with Draggable {
              x = 100.0
              y = 100.0
              width = 80.0
              height = 50.0
              arcWidth = 7.5
              arcHeight = 7.5
              fill = Color(0.15, 0.15, 0.15, 1.0)

              onMousePressed = (event: MouseEvent) => {
                draggablePerformPress(event)
              }

              onMouseDragged = (event: MouseEvent) => {
                draggablePerformDrag(event)
              }
            }
          )
        }
      }.delegate
    }
  }

Draggable trait 提供了 draggablePerformPress() 和 draggablePerformDrag() 方法,本质上是设置 translateX 和 translateY 的地方。

如果我单击并拖动 Rectangle 节点,它不会移动。但是,如果我删除 BorderPane 并使 Group 对象成为 Scene 的根,则可以拖动。我已经确认 onMouse 事件正在被触发,所以一定是由于某种原因 BorderPane 覆盖了 translateX/Y ...我只是不知道为什么,也不知道如何防止这种情况发生。

4

1 回答 1

2

我解决了这个问题。通过将组更改为窗格,代码现在可以工作了。但是,我仍然不确定为什么不能在这种情况下使用 Group(但它可能没有 BorderPane 作为其父级)。

于 2012-11-30T02:11:50.117 回答