4

I have a layout with a main panel whose content is decided by me throught buttons in this way:

public void actionPerformed(ActionEvent e) {
    mainPanel.removeAll(); //removing all current panel components
    if(e.getActionCommand().equals("content1")){
        mainPanel = new Content1Panel();
        add(mainPanel,BorderLayout.CENTER);
        validate();
    }else if(e.getActionCommand().equals("content2")){
        mainPanel = new Content2Panel();
        add(mainPanel,BorderLayout.CENTER);
        validate();
            }
}

now, if I minimize the frame and then bring it to front I find all main panel's components disappeared! Anyway, when I hover on them with the mouse components show again. What is wrong?

Sumit Singh
  • 15,743
  • 6
  • 59
  • 89
user1610075
  • 1,583
  • 3
  • 15
  • 32
  • 1) For better help sooner, post an [SSCCE](http://sscce.org/). 2) Please use a consistent and logical indent for code blocks. – Andrew Thompson Aug 22 '12 at 10:18
  • `removeAll();` Use a [`CardLayout`](http://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html) instead. – Andrew Thompson Aug 22 '12 at 10:19
  • See also [this question](http://stackoverflow.com/q/12042039/1076463) where `removeAll` removed a bit too much – Robin Aug 22 '12 at 10:31

1 Answers1

4
  • for JFrame / JDialog / JWindow

to use

validate(); (revalidate in Java7 )
repaint();
Community
  • 1
  • 1
mKorbel
  • 109,525
  • 20
  • 134
  • 319