Ich habe eine Swing-Anwendung, die eine Liste von Objekten speichert. Wenn der Benutzer auf eine Schaltfläche klickt,Prevent Swing GUI während einer Hintergrundaufgabe gesperrt
Ich möchte zwei Operationen für jedes Objekt in der Liste ausführen, und wenn das abgeschlossen ist, dann grafisch die Ergebnisse in einem JPanel. Ich habe versucht, SwingWorker, Callable & Runnable, um die Verarbeitung zu tun, aber egal was ich tue, während der Verarbeitung der Liste (die bis zu ein paar Minuten dauern kann, wie es IO gebunden ist), ist die GUI gesperrt.
Ich habe das Gefühl, es ist wahrscheinlich die Art und Weise, wie ich die Threads oder etwas anrufe, oder könnte es mit der Grafikfunktion zu tun haben? Das ist nicht gewunden, da es sehr schnell ist.
Ich muss die zwei Verarbeitungsstufen auch in Reihenfolge machen, also was ist der beste Weg, um sicherzustellen, dass der zweite auf den ersten gewartet hat? Ich habe() verwendet, verbinden, und dann
while(x.isAlive())
{
Thread.sleep(1000);
}
zu versuchen und dies zu gewährleisten, aber ich mache mir Sorgen, dies auch die Ursache für mein Problem sein könnte.
Ich habe überall nach irgendwelchen Zeigern gesucht, aber da ich keine finden kann bin ich sicher, dass ich hier etwas Dummes mache.
Es könnte hilfreich sein, wenn Sie Code einfügen, der Ihnen zeigt, wie Sie SwingWorker verwenden. –
Einverstanden; zeig uns den problematischen Code. – Rob