Ich erstelle eine Fortschrittsbalken mit JLabel. Problem ist, wenn ich diese Bezeichnung zu meinem Rahmen hinzufüge und einige andere Aufgaben ausführe, mein JFrame einfriert. Gibt es eine Methode wie Invoke und warte auf Swing um seine Zeichnung zu vervollständigen?Wie erzwingen Sie Java, um Swing-Label zu zeichnen?
private void jButtonOKActionPerformed(java.awt.event.ActionEvent evt) {
JLabel loadingBar = new JLabel("test");
myFrame.add(loadingBar);
doSomeOtherTasks();
}
Können Sie bitte eine [MCVE] zeigen? Dieser Code sollte nicht einfrieren –
Wenn Ihre Benutzeroberfläche einfriert, tun Sie etwas falsch um die https://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html – GhostCat
Es ist nicht so sehr eine Frage der erzwingen Java, um das Label so zu aktualisieren, dass es den Event-Dispatch-Thread nicht blockiert, indem eine lang andauernde Task auf dem EDT ausgeführt wird. Um es anders auszudrücken: Blockiere nicht den EDT (Event Dispatch Thread). Die GUI wird "eingefroren", wenn das passiert. Weitere Informationen und das Update finden Sie unter [Parallelität in Swing] (https://docs.oracle.com/javase/tutorial/uiswing/concurrency/). –