Comment utilisez-vous l'Event Dispatch Thread?

J'ai appris sur la façon de swing n'est pas thread-safe. Plonger plus profondément, j'ai découvert que chaque modification d'un composant swing doit être fait sur l'Event Dispatch Thread afin d'éviter divers problèmes associés avec le multithreading. Cependant, l'information semble complètement s'arrêter là. Il ne semble pas être un bon tutoriel qui explique comment le faire n'importe où accessibles sur internet.

Accumulant les informations de code affiché pour d'autres questions, il me semble que j'aurais à mettre en désordre, bloc de code autour de chaque swing simple modification dans mon programme (comme dans cet exemple tiré de ma propre code):

try {
        SwingUtilities.invokeAndWait(new Runnable() {

            public void run() {
                setTitle("Frame title");
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setVisible(true);

                setSize(800, 480);
                setLocationRelativeTo(null);
                setIconImage(Toolkit.getDefaultToolkit().createImage(ClassLoader.getSystemResource("Frame icon.png")));
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }

En gros, est-ce exact? Dois-je mettre ce code (ou l'équivalent avec invokeLater) autour de chaque modification apportée à un composant Swing dans mon code?

Aussi, pourquoi ne pas Balancer le faire automatiquement?

OriginalL'auteur Tharwen | 2011-10-25