2011-02-08 9 views
3

애플릿을 만들었습니다. "잊어 버렸습니다."버튼을 누르면 애플릿의 현재 JPanel이 지워집니다. & 검색/가져 오기와 관련된 JComponents를 표시하는 새 JPanel을 만듭니다. 암호를 잊어 버림.스윙 콘텐츠 패널 지우기/패널 및 새 패널 표시

.removeAll();을 사용하여 JPanel을 성공적으로 지울 수 있습니다. 하지만 콘텐츠 창 (주 JPanel의) 애플릿에 &이 추가 내 모든 새로운 JComponent의 생성 후은 & 새로운 JPanel의에게 내가 애플릿의 크기를 조정하지 않는 한 가, 다음은 & 작품을 다시 그립니다 & 구성 요소를 표시하지 않습니다 회색 간다.

모든 새로운 JComponents를 작성한 후에도 .invalidate()를 넣으려고했으나 여전히 애플릿을 새로 고치지 않습니다.

.removeAll() &에 다른 JComponents를 추가 한 후 내 JPanel을 삭제 한 후 어떻게 나타나게 할 수 있습니까?

코드 :

public class App extends JApplet 
{ 
    JPanel mainPanel; 

    public void init() 
    { 
     SwingUtilities.invokeAndWait(new Runnable() { 
      public void run() 
      { 
       showLoginPanel(); // this shows fine on loading 
      } 
     }); 

    } 

    public void showForgotPassPanel() 
    { 
     mainPanel.removeAll(); 

     mainPanel = (JPanel) getContentPane(); 
     Box hBox = Box.createHorizontalBox(); 
     Box vBox = Box.createVerticalBox(); 
     mainPanel.setLayout(new BorderLayout()); 

     ... create components 

     ... add components to mainPanel 

     mainPanel.invalidate(); // doesn't make new layout visible, not unless I resize the applet 
    } 
} 

답변

5

사용 mainPanel.revalidate(); 및/또는 mainPanel.repaint(); 방법.

+0

JRE7을 사용하여 둘 다 사용해야했습니다. 간단한 페인트로 빈 회색 판이 나에게 남았고, 간단한 재 검증이 새로운 내용을 옛날에 그린 것이다. – efaj

0

또 다른 "깨끗한"옵션은보기를 CardLayout으로 바꾸는 것입니다. 그것은 당신 뒤에서 모든 더러운 일을합니다.