JavaFX阶段在特定屏幕上打开 - 奇怪的行为 [英] JavaFX Stage open on specific Screen - weird behavior
问题描述
我使用以下代码打开一个舞台:
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屋!