title: JPanel removeAll doesn't get rid of previous components
body: <p>I have a swing application in which I display images in a JPanel. If the app is unable to produce the image I want to remove the previous one from the JPanel and replace it with a JTextField and message. I can add the text field , but it's drawn on top of the previous contents, which is itself a subclass of JPanel. Here's what I have:</p>
  
  <pre><code>private void displayMessage(String message) {
    JTextField tf = new JTextField(message);
    cdPanel.removeAll();
    cdPanel.add(tf, BorderLayout.NORTH);//tried lots of variations, inc. no layout    
    cdPanel.validate();
  }
  </code></pre>
  
  <p>How can I get cdPanel to completely redraw itself?</p>