我试图通过在我的应用程序上拖动某个组件来拖动我的舞台。 它完美地运作如下:
miniTop.setOnMousePressed(e-> {
xOffset = e.getSceneX();
yOffset = e.getSceneY();
});
miniTop.setOnMouseDragged(e -> {
stage = (Stage) ((Node)e.getSource()).getScene().getWindow();
stage.setX(e.getScreenX() - xOffset);
stage.setY(e.getScreenY() - yOffset);
});
但是当我这样做时...... nononon
@FXML
public void getOffset(MouseEvent e) {
xOffset = e.getSceneX();
yOffset = e.getSceneY();
}
@FXML
public void dragStage(MouseEvent e) {
stage = (Stage) ((Node)e.getSource()).getScene().getWindow();
stage.setX(e.getScreenX() - xOffset);
stage.setY(e.getScreenY() - yOffset);
}
这些事件处理程序链接到:
我尝试用dragStage
方法包含Platform.runLater()
方法,因为它通过移动舞台来改变用户界面,但这没有帮助......
.setOnMouse和Scene Builder事件处理程序之间有什么区别?
编辑: 30分钟后再次运行后,它开始工作了吗?什么? (当你认为自己犯了错误时,你很难学到哈哈)
答案 0 :(得分:0)
应该没有区别,FXML事件处理程序可用的文档只链接到:javafx.beans.property.ObjectProperty<javafx.event.EventHandler<javafx.event.ActionEvent>> onAction
是here
这表明它们以相同的方式实施。你可以检查你的FXML文件中事件处理程序是否正确分配给你期望的元素?