JAVAFX:当应用程序在扩展监视器上时,弹出对话框出现在主监视器上

时间:2016-10-06 15:54:22

标签: popup javafx-8 stage

JAVAFX:我有一个应用程序,它生成一个我在舞台上创建的模态弹出对话框,并将我的应用程序阶段作为新popover阶段的所有者。当我运行应用程序并将其移动到我的扩展监视器时,弹出窗口仍然出现在我的主监视器上。

这是我的代码片段:

    BorderPane borderPane = new BorderPane();
    Scene currentScene=new Scene(borderPane,1015,175);

    Stage popoverStage= new Stage();
    popoverStage.initModality(modality);
    popoverStage.alwaysOnTopProperty();
    popoverStage.initStyle(StageStyle.TRANSPARENT);
    popoverStage.initOwner(control.getParent().getScene().getWindow());
    Bounds currentMouseLocation=control.localToScene(control.getBoundsInLocal());
    double popOverX=(currentMouseLocation.getMinX()+currentMouseLocation.getMaxX())/2;
    double popOverY=(currentMouseLocation.getMinY()+currentMouseLocation.getMaxY())/2;
    popoverStage.setX(popOverX);
    popoverStage.setY(popOverY);
    popoverStage.setScene(currentScene);
    popoverStage.show();

1 个答案:

答案 0 :(得分:1)

setX()的{​​{1}}和setY()方法期望 screen 坐标系中指定的坐标。您从当前场景坐标系传递坐标。

替换

Stage

Bounds currentMouseLocation=control.localToScene(control.getBoundsInLocal());