¿Cómo cambiar el color de fondo para JPanels con Nimbus Look and Feel?

Quiero usar un color de fondo diferente para todos mis JPanels en una aplicación. ¿Cómo puedo hacer eso cuando uso Nimbus Look and Feel?

Yo sigo Cambiar el tema de color para cambiar el color de los componentes en Nimbus Look and Feel.

Solo funciona a veces, al azar. Si configuro unaPropertyChagneListener antes de cambiar el color, solo se notificauna ve.

Aquí hay un código de prueba:

public class RedPanels extends JFrame {

  public RedPanels() {
    JPanel panel = new JPanel();
    add(panel);
    setPreferredSize(new Dimension(100, 100));
    pack();
    setVisible(true);
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {

      @Override
      public void run() {

        try {
          for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                UIManager.setLookAndFeel(info.getClassName());
                UIManager.getDefaults().addPropertyChangeListener(
                                               new PropertyChangeListener() {

                  @Override
                  public void propertyChange(PropertyChangeEvent event) {
                    if (event.getPropertyName().equals("Panel.background")) {
                      System.out.println("color changed");
                    }

                });
                UIManager.put("Panel.background", new Color(255,0,0));
                break;
            }
          }
        } catch (Exception e) {
            // Nimbus is not available.
        }
        new RedPanels();
        }
    });
  }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta