我正在绘制各种我希望能够在屏幕上拖动的矩形节点。
我的代码当前是这样的:
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特征提供了draggablePerformPress()和draggablePerformDrag()方法,本质上是在其中设置了translateX和translateY的位置。
如果我在“矩形”节点上单击并拖动,它不会移动。但是,如果删除BorderPane并将Group对象作为场景的根,则可以进行拖动。我已经确认onMouse事件已被触发,因此一定是由于某种原因BorderPane覆盖了translationX / Y ...我只是不知道为什么,而且我也不知道如何防止这种情况的发生。
最佳答案
我解决了问题。通过将组更改为窗格,代码即可正常工作。但是,我仍然不确定为什么不能在这种情况下使用Group(但是在没有BorderPane作为其父对象的情况下可以使用Group)。
关于java - 进入BorderPane时未遵守ScalaFX/JavaFX Node.translateX/Y,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13636597/