I am having a GUI of login screen. Whenever i press the login button the user name and password is checked against entry in an online mysql database,i'm extracting all this information from database in actionPerformed() method of the login button.Problem is while program is fetching data from database the GUI freezes.I googled my problem and found that i should use SwingWorker but being a newbie i didn't get how to use SwingWorker for my purpose.
First of all, declare a member variable in your class (it could be in your GUI class) of type SwingWorker
like this:
private SwingWorker<Boolean, Void> backgroundProcess;
Then initialize the variable in your initialization code (constructor, onShow method event handler, etc) like this:
backgroundProcess = new SwingWorker<Boolean, Void>() {
@Override
protected Boolean doInBackground() throws Exception {
// paste the MySQL code stuff here
}
@Override
protected void done() {
// Process ended, mark some ended flag here
// or show result dialog, messageBox, etc
}
};
Then, in your actionPerfomed
method, call the SwingWorker
's execute method:
backgroundProcess.execute();
If done correctly, the GUI shouldn't freezee after the button press event