Я пытаюсь сделать экран входа в приложение. Во время входа в базу данных MySQL будет выполнено множество SQL-запросов, и настройка всех параметров может занять несколько секунд. Я хотел бы отобразить экран состояния с помощью макета карты и обновить JLabel во время работы фонового потока.
Вот суть того, что у меня есть для моего рабочего потока:
public class LoginPrepThread extends Thread {
private final UIMain parent;
public LoginPrepThread(UIMain w){
parent = w;
}
public void exec(){
EventQueue.invokeLater(this);
}
public void run(){
try{
//SqlHelper sql = SqlHelper.instance;
sleep(500);
parent.getLoadingLable().setText("Fetching preferences...");
parent.getMainFrame().revalidate();
sleep(500);
parent.getLoadingLable().setText("Scanning workbench...");
parent.getMainFrame().revalidate();
sleep(500);
parent.getLoadingLable().setText("Updating permissions...");
parent.getMainFrame().revalidate();
sleep(500);
parent.getLoadingLable().setText("Finished...Please wait");
parent.getMainFrame().revalidate();
sleep(1000);
parent.getLayout().show(parent.getMainFrame().getContentPane(), "view.main");
}catch(Exception e){
}
}
}
Вот как я это называю (внутри события JButton, после аутентификации):
setActiveProfile(user);
layout.show(frame.getContentPane(), "view.loading");
frame.repaint();
LoginPrepThread pt = new LoginPrepThread(thisTrick);
pt.exec();
Я добавил несколько фиктивных событий, но метка состояния не меняется... есть предложения?