Ich habe ein Problem in meiner Swing-App.Swing App stürzt ab, wenn minimiert
Ich habe eine SwingWorker
, die eine for-Schleife innerhalb hat, die 300+ Oracle Datenbankanforderungen startet und mehrere JTable
s mit den Ergebnissen füllt.
Wenn ich das Swing-App-Fenster nicht minimiert oder zumindest teilweise im Windows Explorer sichtbar halte, wird der Batch vollständig ausgeführt. Wenn ich die App nun minimiere und dann zurück zur Swing-App gehe, wird sie eingefroren.
Grundlegende Umrisse und Farben der Komponenten werden sichtbar sein, das meiste Fenster wird nur von der Hintergrundfarbe sein, die ich darauf eingestellt habe (schwarz) und kein Text wird sichtbar sein. Die einzige Möglichkeit, die App zu beenden, besteht darin, den Prozess zu beenden, da ich durch Klicken auf die Schaltfläche "X" das Fenster nicht schließen kann.
Ist das ein häufiges Problem? Wie verhindern Sie das?
Schleife innerhalb des Batch-Arbeiter:
for(int i=1; i<=maxDepth; i++){
String[] result = getAllLists(database, i);
for(int j=0; j<result.length; j++){
String period=result[j];
for(String name : names){
System.out.println("New Query: "+name+ " " + period + " | " + "Loading " + (days) + " days x " + years + " years --- ");
if(isValid(period,name)){
List<TickHistory> queryResult = model.getByDaysMultiple(name,period,days+mod+daysHeadroom,years, false);
getModelTableData(name, period, DatabaseHelpers.dateToString(lastCob), years,days,queryResult);
populatePricesTable(queryResult, days, false);
view.setNameText(name);
view.setPeriodText(period);
}else{
System.out.println("query invalid");
}
}
}
}
Können Sie uns bitte einen Code zeigen? Vermutlich fehlt Ihnen 'SwingUtilities.invokeLater()'. Überprüfen der App mit jvisualvm könnte auch helfen. –
Keine Ausnahmen? Verwenden Sie 'publish' &' process' korrekt? –
@TamasRev Ich benutze invokelater im Hauptprozess, wo ich den Hauptrahmen, Controller und das Objekt, das ich benutze, um eine Verbindung zur Datenbank herzustellen – LucasSeveryn