【发布时间】:2015-11-08 14:16:17
【问题描述】:
我已经实现了一个 EventHandler 来获取鼠标的窗口拖动:
public void mouseEventHandler(){
final Delta dragDelta = new Delta();
view.getScene().setOnMousePressed(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
dragDelta.x = mainStage.getX() - mouseEvent.getScreenX();
dragDelta.y = mainStage.getY() - mouseEvent.getScreenY();
}
});
view.getScene().setOnMouseDragged(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
mainStage.setX(mouseEvent.getScreenX() + dragDelta.x);
mainStage.setY(mouseEvent.getScreenY() + dragDelta.y);
stage.setX(mainStage.getX());
stage.setY(mainStage.getY() + view.getScene().getHeight() + 25);
}
});
}
我有两个stage:mainStage和一个stage,它沉迷于mainStage的坐标。我的问题是,只有在我单击 mainStage 的窗口并拖动它时,舞台才会移动。但是如果我单击要删除的窗口的标题栏,它不会移动。 如何获取标题栏的 MouseEvent?
这里是show()方法,所以你可以理解成瘾:
public void show(Stage mainStage, MenuPresenter menuPresenter){
this.model = new Model();
this.view = new GameView(this.model);
this.chatWatchView = new ChatWatchView();
this.score = this.model.getScore();
this.menuPresenter = menuPresenter;
this.mainStage = mainStage;
mainStage.setScene(view.getScene());
mainStage.centerOnScreen();
stage = new Stage();
stage.setScene(chatWatchView.getScene());
stage.initStyle(StageStyle.UNDECORATED);
stage.setX(mainStage.getX());
stage.setY(mainStage.getY() + view.getScene().getHeight() + 25);
stage.show();
mainStage.show();
startTimeline();
activateEventHandler();
mouseEventHandler();
//view.setScore("Score: " + model.getScore());
}
【问题讨论】:
标签: mouseevent javafx-8 mouselistener