Hi!
Warum verschwindet der SwingWorker nicht, wenn die Methode "done()" zum Schluss bereits durchgeführt ist? ( siehe Bild )
Ich habe hier im Forum auch erfahren, dass der SwingWorker nur einmal durchführen kann! Wenn ja, was mache ich jetzt nun?
Hier ist mein Code:
Wenn ich das Fenster mit "JFrame" öffne, dann wird der SwingWorker in der Methode "processWindowEvent" unter WindowEvent.WINDOW_OPENED ausgeführt und sobald der SwingWorker vollständig fertig ist, verschwindet der im Prozess nicht! (siehe Bild) Ich verwende zum ersten Mal mit SwingWorker von Java 6! Was habe ich nun falsch gemacht?
Gruß
Iron Monkey
Warum verschwindet der SwingWorker nicht, wenn die Methode "done()" zum Schluss bereits durchgeführt ist? ( siehe Bild )
Ich habe hier im Forum auch erfahren, dass der SwingWorker nur einmal durchführen kann! Wenn ja, was mache ich jetzt nun?
Hier ist mein Code:
Wenn ich das Fenster mit "JFrame" öffne, dann wird der SwingWorker in der Methode "processWindowEvent" unter WindowEvent.WINDOW_OPENED ausgeführt und sobald der SwingWorker vollständig fertig ist, verschwindet der im Prozess nicht! (siehe Bild) Ich verwende zum ersten Mal mit SwingWorker von Java 6! Was habe ich nun falsch gemacht?
Java:
new SwingWorker<Void, String>()
{
private ArrayList<ArrayList<Object>> listTermine = null;
// Job wird in eigenem Thread ausgeführt.
// Hier dürfen keine Manipulationen an Swing-Komponenten stattfinden.
@SuppressWarnings("unchecked")
@Override
protected Void doInBackground() throws Exception
{
MomentDialogWithConsole moment = new MomentDialogWithConsole( parent, false, mcd_RLH );
// Bediener-Gruppe aus der DB holen und anschliessend in die JList füllen!
moment.setText( "Bediener-Gruppe holen" );
Vector<String> listBedienerGruppe = ByteConverter.readBedienerGruppeFromDB( parent, mcd_RLH, mcd_RLH.USERID, true );
if( listBedienerGruppe != null )
{
oldBedienerGruppe = (Vector<String>) listBedienerGruppe.clone();
for( String elemente : listBedienerGruppe )
publish( elemente );
listBedienerGruppe.add( mcd_RLH.USERID );
.....
}
moment.setText( "Termine holen" );
if( listBedienerGruppe != null )
{
for( int i = 0; i < listBedienerGruppe.size(); i++ )
{
if( isCancelled() )
break;
// Andere Aufgabe
}
}
else
{
// Dem Server sagen:"Gib mir Daten von der DB"
}
moment.close();
moment = null;
if( listBedienerGruppe != null )
{
listBedienerGruppe.clear();
listBedienerGruppe = null;
}
return null;
}
// Durch publish() veröffentliche Zwischenergebnisse behandeln.
// process() wird innerhalb des EDT aufgerufen.
// Hier können Manipulationen an GUI-Elementen sicher vorgenommen werden.
@Override
protected void process( List<String> chunks )
{
for (Object element : chunks)
getModelBedienerUebernahme().addElement(element);
}
// Worker hat seinen Job beendet. done() wird innerhalb des EDT aufgerufen.
// Hier können Manipulationen an GUI-Elementen sicher vorgenommen werden.
@Override
protected void done()
{
if( !isCancelled() )
{
....
}
}
}.execute();
Gruß
Iron Monkey