Frame hängt sich auf trotz invokeLater

B3ast

Mitglied
Hallo,

ich hänge gerade und komme leider nicht weiter. Da Swing nicht threadsafe ist nehme ich immer SwingUtilities.invokeLater(new Runnable ...) mache einen neuen Thread und schreibe dort meinen Code.

Ich möchte nun, dass sich jede Sekunde der Wert eines Spinners auf eine Zufallszahl ändert. Ich dachte eigentlich, dass der neue Thread das dann separat ausführen kann und die GUI nicht mehr blockiert ist.

Das ist aber nicht der Fall, das ganze Fenster hängt sich trotzdem auf.

Java:
       private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { 
                 SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                SecureRandom secRan = new SecureRandom();
                for (int i = 0; i < 10; i++) {
                    jSpinner1.setValue(secRan.nextInt(89999) + 10000);
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(Obj.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }
        });
}
 
Zuletzt bearbeitet:
InvokeLater führt den Runnable in Event Thread aus.
Es ist dafür gedacht von einem parallel laufenden Thread heraus aufgerufen zu werden und somit wieder Code im Event Thread ausführen zu können.
 

Neue Themen


Zurück
Oben