java - 带有进度条的应用程序和启动画面的初始化 (Swing)

标签 java swing splash-screen

我们已经为我们的应用程序构建了启动画面。当应用程序的初始化在主线程中时它工作正常,但是当我在 EDT 中移动初始化时(主方法中的 SwingUtilities.invokeLater),由于 EDT 的阻塞,进度条和信息标签不会自行重绘。我知道,使用 invokeLater 可以帮助我重新绘制 GUI。但我的问题是:很难将应用程序的初始化分成单独的部分(遗留代码)。即使我这样做,我也会得到一个丑陋的 matroshka 代码(在 invokeLater 中有六次 invokeLater)。

我应该选择哪种解决方案:

  1. 在主线程中保留初始化(我目前的决定)
  2. 尝试将其移至 EDT(如果可能)并获取 matroshka 代码
  3. 每次我更新启动画面时,使用 Foxtrot 库在 EDT 中提供非阻塞 sleep (它工作正常 - 启动画面可以自行重绘,但这对我来说是一个 hack)

可能有人有更好的解决方案?

附言我已经在这里阅读了一些类似的问题,但没有发现任何对我有帮助的问题。

最佳答案

SwingWorkerdoInBackground() 方法中加载源数据, 和 publish() 中间结果;在 process() 中更新 GUI 组件的模型。当数据继续加载时,将显示初始结果并且 GUI 将正常运行。加载数据的实际时间将保持不变,但感知的时间会更少。

关于java - 带有进度条的应用程序和启动画面的初始化 (Swing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23912610/

相关文章:

java - 如何使用adb端口转发?

java - 具有弹跳效果的动态壁纸

java - 在 Android 上使用 andengine 在 ButtonSprite 上添加 OnClickListener

java - Java maven 项目中的启动屏幕

ios - Iphone简历上的闪屏

android - 在没有 photoshop 知识的情况下创建简单的启动画面(Ionic/Cordova)

java - 如何将 Spring Boot 执行器添加到 WAR 项目

java - 图像堆叠在一起

java - maven 打包app jar,创建项目类路径,目标

Java JComboBox 泛型