- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 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/
我在使用 may e(fx)clipse 应用程序时遇到问题。我想在应用程序启动时显示启动屏幕。我成功创建了实现 StartupProgressTrackerService 的类,并调用了我的 sta
我一直在尝试 Tornadofx。尝试创建自定义标题栏,这是我目前正在尝试的代码 fun main(args: Array) { launch(args) } class MyApp : Ap
对于一个科学实验,我写了一个turtle.py ,它会打开一个 800x480 的窗口并绘制一个缓慢增长的黑点。 turtle.py以 C:\Users\kaza>python C:\Users\ka
我有大量数据,计算排序键的成本相当高。我想要做的是使用 DSU 模式,我在其中获取行并计算排序键。一个例子: Qty Name Supplier Row 1: 5
当我链接我的 C++ DLL 程序时,我收到以下错误和警告: Severity Code Description Project File Line Suppressi
Python 爱好者喜欢谈论一种称为 DSU 的技术: 假设我想按第三个字段的 int 值对列表进行排序: # Decorate decorated = [(int(item[2]), item) f
我使用 JavaFX 创建了一个没有标题栏的全屏应用程序,但它仅在 Windows 上以全屏模式成功启动。当我在Linux(Ubuntu 19.04 Disco Dingo)上尝试时,如果没有标题栏,
我用 Java 创建了一个未修饰的每像素半透明 JFrame。框架的大小(在下面的屏幕中)是 512x512。到目前为止,我只添加了 3 张图像。我的问题是 Compton 创建的窗口阴影几乎破坏了逐
我正在尝试测试一个组件取消装饰器,但我没有。 例子: import React, { Component } from 'react' import { connect } from 'react-r
我最近更新到了 Angular v9,并在更改日志中定义,不推荐使用未修饰的基类,该基类使用 Angular 功能或由指令或组件扩展。 所以我的应用程序中有很多 mixin 是这样的: 销毁: exp
我正在尝试创建一个不会出现在 Windows 任务栏上且未装饰的舞台(没有边框,也没有关闭/最小化/最大化按钮)。我的最终目标是创建一个会弹出通知窗口的托盘图标应用程序。 与此类似 question我
我是一名优秀的程序员,十分优秀!