Oberfläche aktualisiert nicht wegen sleep

Hallo,
Ich hab eine Oberfläche, die sämtliche sleeps quasi aufaddiert und erst danach die Oberflächenänderungen durchführt, die während der sleeps stehen
hier mein code:

Java:
package klassen;
import javax.swing.SwingUtilities;
import java.applet.Applet;
import java.applet.AudioClip;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
import javax.swing.ImageIcon;
import java.awt.Font;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import java.awt.*;

public class Oberflaeche extends JFrame {
	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JLabel karte1 = null;
	private JLabel karte2 = null;
	private JLabel lbSpieler = null;
	private JLabel lbDealer = null;
	private JLabel lbStart = null;
	private JLabel lbPunkteDealer = null;
	private JLabel lbSpielerPunkte = null;
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				Oberflaeche thisClass = new Oberflaeche();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	public Oberflaeche() {
		super();
		initialize();
	}

	private void initialize() {
		this.setSize(1200, 622);
		this.setContentPane(getJContentPane());
		this.setTitle("Oberflaeche");
	}
	public void karteSound() {
		int r = (int) Math.round(3*Math.random()+1);
		try {
			AudioInputStream audioIn = AudioSystem.getAudioInputStream(getClass().getResource("/sounds/k"+r+".wav"));
			Clip clip = AudioSystem.getClip();
			clip.open(audioIn);
			clip.start();
			}
			catch (Exception f){
				System.out.println(getClass().getResource("/sounds/"));
			}
	}
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			lbSpielerPunkte = new JLabel("0", JLabel.CENTER);
			lbSpielerPunkte.setFont(new Font("Dialog", Font.BOLD, 36));
			lbSpielerPunkte.setForeground(Color.yellow);
			lbSpielerPunkte.setBounds(new Rectangle(30, 375, 121, 76));
			lbPunkteDealer = new JLabel("0", JLabel.CENTER);
			lbPunkteDealer.setSize(new Dimension(121, 76));
			lbPunkteDealer.setFont(new Font("Dialog", Font.BOLD, 36));
			lbPunkteDealer.setForeground(Color.yellow);
			lbPunkteDealer.setLocation(new Point(30, 165));
			lbStart = new JLabel();
			lbStart.setBounds(new Rectangle(1020, 480, 91, 31));
			lbStart.setFont(new Font("Dialog", Font.BOLD, 36));
			lbStart.setForeground(Color.yellow);
			lbStart.setText("Start");
			lbStart.addMouseListener(new java.awt.event.MouseAdapter() {
				boolean in = false; // Maus im Bereich des Labels ja/nein
				public void mouseEntered(java.awt.event.MouseEvent e) {
					in = true;
					lbStart.setForeground(Color.red);
					lbStart.setFont(new Font("Dialog", Font.BOLD, 36));
				}
				public void mouseExited(java.awt.event.MouseEvent e) {
					in = false;
					lbStart.setForeground(Color.yellow);
					lbStart.setFont(new Font("Dialog", Font.BOLD, 36));
				}
				public void mousePressed(java.awt.event.MouseEvent e) {
					lbStart.setForeground(Color.blue);
					lbStart.setFont(new Font("Dialog", Font.BOLD, 28));
					
					// Soundwiedergabe Kartenmischen
					try {
					AudioInputStream audioIn = AudioSystem.getAudioInputStream(getClass().getResource("/sounds/shuffle.wav"));
					Clip clip = AudioSystem.getClip();
					clip.open(audioIn);
					clip.start();
					}
					catch (Exception f){
						System.out.println("Fehler bei der Soundwiedergabe");
					}
					//sleep
					System.out.println("sleep 1");
					try {
					    Thread.sleep(1000);
					} catch(InterruptedException ex) {
					    Thread.currentThread().interrupt();
					}
					//Karten austeilen
					karteSound();
					karte1.setIcon(new ImageIcon(getClass().getResource("/bilder/herz9.jpg")));
					System.out.println("Karte 1");
					//sleep
					System.out.println("sleep 2");
					try {
					    Thread.sleep(500);
					} catch(InterruptedException ex) {
					    Thread.currentThread().interrupt();
					}
					karteSound();
					karte2.setIcon(new ImageIcon(getClass().getResource("/bilder/karoA.jpg")));
					System.out.println("Karte 2");
				}
				public void mouseReleased(java.awt.event.MouseEvent e) {
					lbStart.setForeground(Color.red);
					lbStart.setFont(new Font("Dialog", Font.BOLD, 36));
					if (!in){
						lbStart.setForeground(Color.yellow);
					}
				}
			});
			lbDealer = new JLabel();
			lbDealer.setText("Dealer");
			lbDealer.setSize(new Dimension(121, 76));
			lbDealer.setForeground(Color.yellow);
			lbDealer.setFont(new Font("Dialog", Font.BOLD, 36));
			lbDealer.setLocation(new Point(30, 75));
			lbSpieler = new JLabel();
			lbSpieler.setBounds(new Rectangle(30, 285, 121, 76));
			lbSpieler.setForeground(Color.yellow);
			lbSpieler.setFont(new Font("Dialog", Font.BOLD, 36));
			lbSpieler.setText("Spieler");
			karte1 = new JLabel();
			karte1.setSize(new Dimension(164, 228));
			karte1.setPreferredSize(new Dimension(214, 228));
			karte1.setLocation(new Point(315, 315));
			karte2 = new JLabel();
			karte2.setLocation(new Point(360, 315));
			karte2.setSize(new Dimension(164, 228));
			karte2.setText("");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.setBackground(new Color(75, 143, 37));
			jContentPane.add(karte1, null);
			jContentPane.add(karte2, null);
			jContentPane.add(lbSpieler, null);
			jContentPane.add(lbDealer, null);
			jContentPane.add(lbStart, null);
			jContentPane.add(lbPunkteDealer, null);
			jContentPane.add(lbSpielerPunkte, null);			
			jContentPane.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {				
			});
		}
		return jContentPane;
	}

}

Die Konsolenausgaben stimmen von der Reihenfolge, also muss das Problem darin liegen, dass die Änderungen an der Oberfläche innerhalb des Listeners noch nicht angezeigt werden.
weiß jemand, wie ich das beheben kann?
 

Neue Themen


Zurück
Oben