JavaFX阶段在特定屏幕上打开 - 奇怪的行为

时间:2015-07-01 06:41:15

标签: javafx

我使用以下代码打开一个舞台:

ObservableList<Screen> screens = Screen.getScreens();
   if(screens.size()>1){
         Rectangle2D rec = screens.get(preferredScreen).getVisualBounds();
         stage.setX(rec.getMinX());
         stage.setY(rec.getMinY());   
   }

当从主屏幕的窗口调用它时,这非常有效。

当从非主屏幕调用此屏幕时,舞台将在首选屏幕上打开,然后跳转到鼠标所在的屏幕。

我觉得自己是Windows&#34;功能&#34;。将此窗口设置到右侧屏幕的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

根据Screen的JavaDoc,您应该相对于主屏幕设置新阶段,因为您只扩展了桌面。所以你应该写这样的东西:

    int preferredScreen = 1;
    double offsetX = 0;
    double offsetY = 0;

    Rectangle2D primaryScreenBounds = Screen.getPrimary().getVisualBounds();

    ObservableList<Screen> screens = Screen.getScreens();
   if(screens.size()>1){
         Rectangle2D rec = screens.get(preferredScreen).getVisualBounds();
         // upper left corner of the extended screen
         offsetX = rec.getMinX();
         offsetY = rec.getMinY();
         // set relative to this screen
         stage.setX(primaryScreenBounds.getMinX() + offsetX);
         stage.setY(primaryScreenBounds.getMinY() + offsetY);   
   }

我自己无法测试,我只有一台显示器。