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

JAVAFX: Popup dialog appearing on primary monitor when application is on extended monitor

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

这是我的代码片段:

    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();

StagesetX()setY() 方法需要在 screen 坐标系中指定的坐标。您正在从当前 scene 坐标系传递坐标。

替换

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

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