im calling invokeLater direcly from button on actionPerformed with this code:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
int temp = (jComboBox1.getSelectedIndex() + 1);
heavyProccesingFunction();
}
});
}
and that still freezes the GUI. Why? I get the same result without using the invokelater function.
should I Use
Thread queryThread = new Thread() {
public void run() {
instead?
Edit:
Thanks, new thread should be used.
invokeLaterstill ends up running the code on the dispatcher thread – just later. The aim ofinvokeLateris to allow background threads to post work on the event dispatcher thread.It sounds like you should indeed create another thread – or use a thread pool for the same sort of effect, or
SwingWorkerfor example. Whatever you do, you need to avoid running your slow method on the event dispatcher thread.