在JavaFX中修复舞台启动时可见位置的跳转,可以通过设置舞台(Stage)的位置和尺寸来实现。下面是一个可能的解决方案:
setX(double)
和setY(double)
方法来设置舞台的初始位置,使用setWidth(double)
和setHeight(double)
方法来设置舞台的初始尺寸。例如,设置舞台的初始位置为屏幕的左上角,尺寸为800x600:public class Main extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.setX(0);
primaryStage.setY(0);
primaryStage.setWidth(800);
primaryStage.setHeight(600);
// 其他舞台初始化代码...
}
// 其他应用程序逻辑...
public static void main(String[] args) {
launch(args);
}
}
show()
方法被调用后,再对舞台的位置和尺寸进行调整。为此,可以使用Platform.runLater(Runnable)
方法来在JavaFX应用程序的事件队列中延迟执行一个任务。在任务中,可以使用setX(double)
和setY(double)
方法来调整舞台的位置,使用setWidth(double)
和setHeight(double)
方法来调整舞台的尺寸。例如,将舞台的位置调整为屏幕的中央,尺寸保持不变:public class Main extends Application {
@Override
public void start(Stage primaryStage) {
primaryStage.setX(0);
primaryStage.setY(0);
primaryStage.setWidth(800);
primaryStage.setHeight(600);
// 其他舞台初始化代码...
primaryStage.show();
Platform.runLater(() -> {
primaryStage.setX((Screen.getPrimary().getVisualBounds().getWidth() - primaryStage.getWidth()) / 2);
primaryStage.setY((Screen.getPrimary().getVisualBounds().getHeight() - primaryStage.getHeight()) / 2);
});
}
// 其他应用程序逻辑...
public static void main(String[] args) {
launch(args);
}
}
这样,在舞台启动时,它会先显示在初始位置和尺寸,然后通过Platform.runLater(Runnable)
方法中的任务来调整位置和尺寸,使舞台居中显示。
值得注意的是,JavaFX中的舞台坐标系是相对于屏幕的。所以,可以使用Screen.getPrimary().getVisualBounds()
方法来获取屏幕的可见边界,并计算出居中位置。此外,根据具体需求,可以在舞台的位置和尺寸调整代码中添加其他逻辑,以实现更多的定制化效果。
此外,关于JavaFX中的舞台(Stage)和可见性的进一步学习,您可以参考腾讯云的文档:JavaFX舞台和可见性。这篇文档介绍了JavaFX中舞台和可见性相关的概念、使用方法以及一些示例代码,有助于深入理解和学习。
领取专属 10元无门槛券
手把手带您无忧上云