我有两个监视器。我在第二个监视器上打开了Eclipse,但是当我运行我的JavaFX代码时,JavaFX窗口总是在第一个监视器中打开,每次我必须将它拖动到第二个监视器以使用它。选择哪个监视器打开一个JavaFX窗口
我必须这样做,因为当它在第一台显示器上打开时,场景中的所有组件都不会被加载。只有当我将它拖到第二台显示器时才会加载它。但是当我断开第二台显示器时,它正确加载。
有人可以帮我吗?我如何在默认情况下让窗口在第二台显示器上打开?
注意:我的第一台显示器是Macbook Pro,第二台是用作外部显示器的iMac。
回应提出的意见:
的部件不屏蔽1正确加载的问题,任何简单的JavaFX代码发生。例如,为了方便起见,我将@Sergey给出的代码作为答案。
代码:
public class FXScreens extends Application {
@Override
public void start(Stage stage) {
VBox root = new VBox(10);
root.setAlignment(Pos.CENTER);
Scene scene = new Scene(root, 200, 250);
int index = 1;
for (Screen screen : Screen.getScreens()) {
Rectangle2D bounds = screen.getVisualBounds();
Button btn = new Button("Move me to Screen " + index++);
btn.setOnAction((e) -> {
stage.setX(bounds.getMinX() + 100);
stage.setY(bounds.getMinY() + 100);
});
root.getChildren().add(btn);
}
stage.setTitle("Screen Jumper");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
当我启动这个无论从使用Eclipse或与终端屏幕2,这是在屏幕上1显示的内容: 调整窗口不显示我的组件,但只是缩放他们。我也无法点击按钮。
与其他两台监视器仍然连接,如果我拖动蚀到屏幕1和运行从那里代码,它加载适当:
我还应该补充说,一旦我将它拖到另一个屏幕并加载了组件,它们就可以在任何屏幕上正常工作。
您可能很有可能通过'Screen'工作。请参阅[这里](https://community.oracle.com/thread/2593365?tstart=0)(暂时没有时间去完成答案)。 – Itai
我同意@sillyfly使用'Screen'。然而从你的描述来看,仅在第二个屏幕上加载内容我猜这有些严重的错误或者是这种打算的行为?如果没有,您应该调查并修复它,而不是实施解决方法。 – hotzst
你能提供一个我可以在双显示器设置上测试的例子吗? –