Como eu faço para deixar o JDialog nao transparente?

Segue abaixo um código de exemplo em que inicio um JDialog sobre um JFrame e este Jdialog armazena uma JProgressBar.
A progressao da barra esta perfeita, mas as configuracoes de setBackground() so aparecem apos o termino da execucao do progresso da barra… como eu faço para que a configuracao de setBackground() serem reconhecidas antes do inicio da execucao da barra JProgressBar?

import java.awt.;
import java.awt.event.
;
import javax.swing.*;

public class JPBarra extends JFrame{

JButton executar;
private static JPBarra jpbarra;
public static synchronized JPBarra getInstance() {
	jpbarra = null;
	if (jpbarra == null)
 	   jpbarra = new JPBarra();
	return jpbarra;
}	

private JPBarra() {
	super("JFrame");
	setResizable(false); 
	
	initGUI();
}

public void initGUI(){
	
	Container c = getContentPane(); 
	ActionEventHandler handler = new ActionEventHandler();
	c.setLayout(null); 
	Font font = new Font("Verdana", Font.PLAIN, 14);
	
	JPanel fundo = new JPanel();
	fundo.setBackground(Color.WHITE);
	fundo.setOpaque(true);
	fundo.setBounds(50,50,900,300);
	c.add(fundo);

	executar = new JButton("Executar");
	executar.setFont(font);
	executar.setBackground(Color.LIGHT_GRAY);
	executar.addActionListener(handler);
	c.add(executar);
	executar.setBounds(300,370,100,30);
	
	setSize(1000,500);
	setLocationRelativeTo(null);
	setVisible(true);
	
}

public void progresso(){
	
    final JDialog dlg = new JDialog(jpbarra, "Progress Dialog", true);
    dlg.setLayout(null);
    dlg.getContentPane().setBackground(Color.YELLOW);
    dlg.getRootPane().setOpaque(true);
    
    JProgressBar dpb = new JProgressBar(0, 500);
    dpb.setStringPainted(true);
    
    JPanel central= new JPanel(new BorderLayout());
    central.add(dpb,BorderLayout.CENTER);
    central.setBounds(50,55,400,25);
    
    JLabel lb = new JLabel("aguarde...");
    lb.setOpaque(true);
    lb.setBounds(50,20,70,25);
    dlg.add(lb);
    dlg.add(central);
    dlg.setSize(500, 160);
    dlg.setLocationRelativeTo(jpbarra);
    
    Thread t = new Thread(new Runnable() {
      public void run() {
        dlg.setVisible(true);
      }
    });
    t.start();
    for (int i = 0; i <= 500; i++) {
	dpb.setValue(i);
	Rectangle rect = new Rectangle(0,0,dpb.getSize().width, dpb.getSize().height);
	dpb.paintImmediately(rect);

      try {
        Thread.sleep(10);
      } catch (InterruptedException ie) {
        ie.printStackTrace();
      }
    }						
}


public static void main(String[] args){
	
    try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");	        
    } catch (InstantiationException e) {
    } catch (ClassNotFoundException e) {
    } catch (UnsupportedLookAndFeelException e) {
    } catch (IllegalAccessException e) {
    }
	JPBarra app = new JPBarra();

	app.addWindowListener(new WindowAdapter() {
		public void windowClosing(WindowEvent e) {

			System.exit(0);
		}

		
	});
}

private class ActionEventHandler implements ActionListener {

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == executar) {
			progresso();
		}
	}
}

}

Resolvido o problema

E como você resolveu?