2016-10-06 3 views
0

JAVAFX: У меня есть приложение, которое генерирует модальное всплывающее диалоговое окно, которое я создал на сцене, и задал этап моего приложения как владельца на новом этапе popover. Когда я запускаю приложение и переношу его на свой расширенный монитор, popover по-прежнему появляется на моем основном мониторе.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(); 

ответ

1

setX() В и setY() методы Stage ожидают координаты указаны в экране системы координат. Вы передаете координаты от текущей сцены системы координат.

Заменить

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

с

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

работал отлично. благодаря – supreeta

Смежные вопросы