SwingWorker ou invokeLater ?
Bonjour, je commence à avoir lu beaucoup d articles sur l'EDT, les threads, mais je reste dans le doûte. Faut il que j'utilise un swingworker ou bien swingutilities.invokeLater (comme ci dessous, code simplifié) ? Sur quels critères doit on décider ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class A110StdListener implements KeyListener {
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER
P300traitement();
}
public void P300traitement(){
vue.getGlassPane().setVisible(true);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
boolean isOk = lastContexte().P120cleIsOK();
vue.getGlassPane().setVisible(false);
}
});
pack();
//--> attente d'un nouvel événement de l'utilisateur |
En fait j'ai surtout besoin d'un thread depuis que je veux rajouter un glasspane d'attente pour ma méthode P120cleIsOK qui dure environs 2 secondes.
Pour mémoire, cette méthode
- agit (modif texte, couleur etc...) sur les composants de mon panel (JComboBox, JTextField, JLabel ...)
- fait des accès bdd (lecture, mise à jour)
J'ai trouvé pas mal cette page Oracle SDN, clair et concise.