Thread-Problem in Swing: Fenster wird nur unvollständig angezeigt

Hallo zusammen,

folgendes Problem krieg ich nicht gelöst: Ein Swing-Hauptfenster (JFrame) hat nen Button, der eine längere Hintergrundoperation (hier im Beispiel einfach mal Thread.sleep(10000)) auslöst.

Damit der User informiert wird, dass die Operation noch andauert, soll ein kleines Kontrollfenster (JWindow) überm Hauptfenster angezeigt werden, das nach Beendigung der Operation wieder verschwindet.

Leider wird das Kontrollfenster zwar prinzipiell angezeigt, aber nur als weißes Viereck, ohne Farbe und ohne den Text, der den User informieren soll.

Hier der Code vom Hauptfenster:
Code:
public class HauptFenster extends JFrame
{
	private JButton knopf = new JButton("action");
	
	public static void main(String[] args)
	{
		new HauptFenster();
	}
	
	public HauptFenster()
	{
		super("Hauptfenster");
		this.setSize(800, 600);
		this.setLayout(null);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.knopf.setBounds(10, 10, 100, 20);
		this.knopf.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ev)
			{
				ActionFenster af = new ActionFenster();		
				HauptFenster.this.wasteTime();
				af.close();
			}
		});
		this.getContentPane().add(this.knopf);
		this.setVisible(true);
	}
	
	public void wasteTime()
	{
		   try
		   {
			   Thread.sleep(10000);
		   } catch(InterruptedException e){}
	}
}

Und hier das zickige Kontrollfenster:

Code:
public class ActionFenster extends JWindow
{
	private JLabel label = new JLabel("Work In Progress");
	
	public ActionFenster()
	{
		super();
		this.setLayout(null);
		this.setSize(400, 300);
		this.label.setBounds(10, 10, 200, 50);
		this.getContentPane().add(this.label);
		this.setAlwaysOnTop(true);		
		this.setVisible(true);				
	}
	
	public void close()
	{
		this.setVisible(false);
	}
}

An der Konstruktion des JWindow selbst kanns nicht liegen, denn wenn ich es direkt in der main() aufrufe, zeigt es alles korrekt an. Hat wohl irgendwas mit der fehlenden Thread-Sicherheit von SWING zu tun, aber wie kann ich's anstellen, dass es klappt? Wär cool, wenn jemand weiterwüsste.

Danke schonmal!

Henning
 
OK, guter Hinweis. Ich hatte zwar auch schon etwas mit Threads rumexperimentiert, aber hatte sie falsch gestartet. Im verlinkten Posting ist alles gut beschrieben. Thanx!
 
Zurück