我有一个程序,加载时间很长。因此,我想开发一个启动画面,可以向用户提供正在加载的反馈信息。使用一个简单的JFrame,包含一张图片、一个标签和一个JProgressBar。
我一直在尝试,目前最好的结果是在我的main()
方法中实现:
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
new SplashScreen();
}
});
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
//Code to start system
new MainFrame();
//.. etc
}
});
启动画面(SplashScreen)和主框架(MainFrame)都是继承JFrame类的。同时,我还使用了Substance作为库。
启动画面的构造函数将JLabel和JProgressBar添加到自己身上,然后进行打包并设置可见性。JProgressBar使用了setIndeterminate(true)
方法;
当我运行程序时,启动画面会显示出来,但进度条被锁定了,它不会动,直到程序的其余部分启动后才开始按预期移动。
我错过了什么吗?我所查找的所有内容似乎都没有提到这个问题,大多数“自定义启动画面”的实现方式与我的非常相似。
public void run() { try { UIManager.setLookAndFeel(new SubstanceSaharaLookAndFeel()); } catch (UnsupportedLookAndFeelException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } }
}); 我收到了“必须在事件分派线程上完成组件创建”的错误提示。 - Andy Smith