JavaFX阶段在特定屏幕上打开 - 奇怪的行为 [英] JavaFX Stage open on specific Screen - weird behavior

查看:160
本文介绍了JavaFX阶段在特定屏幕上打开 - 奇怪的行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I open a stage using following code:

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

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

When this is called from a window at primary screen, this works perfectly.

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

When this is called from a non-primary screen, the stage opens on preferred screen and then jumps to the screen where the mouse is in.

我觉得这是一个Windows功能。将此窗口设置到正确屏幕的最佳方法是什么?

Seems to me being a Windows "feature". What would be the best way get this window to the right screen?

推荐答案

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

According to the JavaDoc of Screen, you should set the new stage relative to the primary screen, because you only extend your desktop. So you should write something like this:

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

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

Can't test it by myself, I only have one monitor.

这篇关于JavaFX阶段在特定屏幕上打开 - 奇怪的行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆