У меня есть программа, которая долго загружается. Из-за этого я хотел разработать заставку, которая могла бы предоставлять обратную связь пользователю о том, что загружается. Простой 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. Я также использую вещество в качестве библиотеки.
Конструктор SplashScreen добавляет JLabel и JProgressBar к себе, упаковывает и устанавливает видимые.
JProgressBar - setIndeterminate(true)
;
Когда я запускаю свою программу, отображается мой SplashScreen, но ProgressBar заблокирован, он не двигается, пока не запустится остальная часть программы, и он не начнет двигаться, как ожидалось.
Что мне здесь не хватает? Похоже, что во всех поисках, которые я выполнял, эта проблема не упоминается, и большинство реализаций "пользовательского заставки" делают это очень похоже на меня.