2012-11-29 48 views
2

我正在绘制各种Rectangle节点,我希望能够在屏幕上拖动。ScalaFX/JavaFX Node.translateX/Y在BorderPane中不服从

我的代码是目前这样的:

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 
    } 
    } 

可拖动性状提供draggablePerformPress()和draggablePerformDrag()的方法,这基本上是其中平移X和translateY被设置。

如果我点击并拖动矩形节点,它不会移动。但是,如果我删除了BorderPane并将Group对象设置为场景的根目录,然后拖动作品。我已经确认onMouse事件正在被触发,所以一定是由于某种原因,BorderPane重写了translateX/Y ...我只是不知道为什么,我不知道如何防止这种情况发生。

回答

1

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