我有两台显示器。我在第二台显示器上打开了Eclipse,但是当我运行JavaFX代码时,JavaFX窗口总是在第一台显示器中打开,每次我必须将它拖到第二台显示器上才能使用它。
我必须这样做,因为当它在第一台显示器上打开时,场景中没有任何组件被加载。仅当我将其拖动到第二个监视器时才会加载它。但是,当我断开第二台显示器时,它会正确加载。
有人可以帮帮我吗?默认情况下,如何在第二台显示器上打开窗口?
注意:我的第一台显示器是Macbook Pro,第二台是用作外接显示器的iMac。
回应评论:
在screen1上没有正确加载组件的问题发生在任何简单的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或终端从screen2启动时,这是屏幕1上显示的内容: 调整窗口大小不会向我显示组件,只是缩放它们。我也无法点击按钮。
如果我还连接了另外两台显示器,如果我将eclipse拖到screen1并从那里运行代码,它会正确加载:
我还应该补充一点,一旦我将它拖到另一个屏幕并加载了组件,它们就可以在任何屏幕上正常工作。
答案 0 :(得分:9)
您可以迭代Screen.getScreens()
并将stage
移至所需的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);
}
}
。见下面的例子。
var_list1 = [variables from first 5 layers]
var_list2 = [the rest of variables]
train_op1 = GradientDescentOptimizer(0.00001).minimize(loss, var_list=var_list1)
train_op2 = GradientDescentOptimizer(0.0001).minimize(loss, var_list=var_list2)
train_op = tf.group(train_op1, train_op2)
不幸的是,我无法帮助处理未在主屏幕上加载的组件。请提供更多详细信息以解决该问题(哪些组件,如何创建,代码示例等)