/ / Pourquoi utiliser SwingUtilities.InvokeLater? [dupliquer] - java

Pourquoi utiliser SwingUtilities.InvokeLater? [dupliquer] - java

C'est un code simple pour créer un bouton. Il y a une chose que je ne comprends pas: pourquoi utilisons-nous SwingUtilities.InvokeLater(new Runnable()).

S'il vous plaît, faites la réponse le plus simplement possible afin que je puisse la saisir facilement.

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilies;

public class button {

public static void main(String args[]) {
SwingUtilies.InvokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
JButton button = new JButton("ok");

frame.add(button);
frame.setDefault.CloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.Pack();
frame.setVisible(true);
}
});
}
}

Réponses:

2 pour la réponse № 1

C'est parce que la boucle d'événements dans Swing est à thread unique et que tous les événements Swing sont exécutés à partir de cette même boucle.

Si vous exécutez les graphiques du bouton à partir du fil principal de l’application, cela pourrait entrer en conflit avec d’autres actions de l’UI se déroulant sur le fil de répartition des événements Swing.

Pour synchroniser les activités des boutons avec d’autresAfin que les activités du bouton se déroulent uniquement après que toutes les autres tâches Swing sont terminées, invokeLater est utilisé pour planifier les activités du bouton sur le thread de répartition des événements.