gpt4 book ai didi

JavaFX UNDECORATED 舞台未显示

转载 作者:行者123 更新时间:2023-12-01 09:46:15 24 4
gpt4 key购买 nike

我在使用 may e(fx)clipse 应用程序时遇到问题。我想在应用程序启动时显示启动屏幕。我成功创建了实现 StartupProgressTrackerService 的类,并调用了我的 stateReached 方法。但是我的 javafx 本身有问题。我想使用 StageStyle.UNDECORATED 创建舞台。但是,当我调用 stage.show() 方法时,stage 不会立即呈现,而是在创建主窗口后立即出现。它工作正常,例如与StageStyle.UTILITY。当我使用 showAndWait() 方法时,它也会正确呈现,但它会阻止我的应用程序加载,直到我关闭舞台。

这是我的代码:

public class MyStartupProgressTrackerService implements StartupProgressTrackerService {

private Stage stage;

public MyStartupProgressTrackerService() {

}

@Override
public OSGiRV osgiApplicationLaunched(IApplicationContext applicationContext) {
applicationContext.applicationRunning();
return StartupProgressTrackerService.OSGiRV.CONTINUE;
}

@Override
public void stateReached(ProgressState state) {
if (DefaultProgressState.JAVAFX_INITIALIZED.equals(state)) {
stage = new Stage(StageStyle.UNDECORATED);
stage.initModality(Modality.WINDOW_MODAL);
stage.setAlwaysOnTop(true);
ImageView view = null;
try {
view = new ImageView(SPLASH_IMAGE);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BorderPane bp = new BorderPane();
bp.getChildren().add(view);
Scene scene = new Scene(bp, 400, 300);
stage.setScene(scene);
stage.show();
}
}

}

最佳答案

我找到了一个丑陋的解决方案,但至少它有效。我注意到该方法 stage.showAndWait() 的副作用是完成构建所有尚未呈现的控件。因此,诀窍是初始化初始屏幕,然后创建虚拟阶段,showAndWait()它并立即close()。我知道这个解决方案远非理想,所以如果有人能向我展示替代方法使其发挥作用,我将不胜感激:)

我的代码:

public void showSplash() {
splashScreen = createSplashScreen();
Stage stage2 = new Stage(StageStyle.TRANSPARENT);
splashScreen.show();
Platform.runLater(new Runnable() {
@Override
public void run() {
stage2.close();
}
});
stage2.showAndWait();
}

private Stage createSplashScreen() {
Stage stage = new Stage(StageStyle.UNDECORATED);
stage.setAlwaysOnTop(true);

VBox vbox = new VBox();
vbox.getChildren().add(new ImageView(splashImage));
Scene scene = new Scene(vbox, 400, 300);
stage.setScene(scene);
return stage;
}

关于JavaFX UNDECORATED 舞台未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37994147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com