2013-11-29 3 views
0

Netbeans로 만든 Java 응용 프로그램에서 이상한 문제가 있습니다. 메모리 카드 게임입니다. 메인 클래스는 같은 크기의 패널을 보유하고있는 JFrame입니다. 패널은 격자 레이아웃으로 세분화되며 각 셀에는 카드가 있고 다른 클래스에는 작은 패널과 레이블이 있습니다. 그게 디자인입니다. 메인 클래스의 소스는 게임을위한 많은 함수를 가지고 있고, 게임이 끝났을 때 발생하는 함수, 세번째 JDialog 클래스는 전체 보드를 리셋해야하며, 함수가 removeAll() 메소드를 사용할 때 The Bug가 나온다. removeAll()을 수행하지만 사용자가 JFrame의 크기를 조정하면 결과 만 화면에 나타납니다. 패널을 자동으로 새로 고치는 다른 방법이 있어야합니다. 내 답변을 찾으려면 전체 JavaWiki를 읽어야합니까? removeAll() freeze game

+2

한 공간에 여러 구성 요소가있는 경우 [CardLayout'] (http://docs.oracle.com/javase/7/docs/api/java/awt/CardLayout.html)을 참조하십시오. [간단한 예] (http://stackoverflow.com/a/5786005/418556). –

답변

3

전화 revalidate() 용기에 다음 repaint() 제거 또는 구성 요소를 추가 한 후 주셔서 감사합니다. 그것이 JFrame의 contentPane이라면,이 메소드들을 호출해야합니다.

JPanel panel = (JPanel) jFrame.getContentPane(); 
panel.removeAll(); 
panel.revalidate(); 
panel.repaint(); 
  • revalidate() 방법은 모든 componentss가 포함 된 레이아웃을 다시 컨테이너의 레이아웃 매니저를 알려줍니다.
  • repaint() 메서드는 다시 칠하기 관리자에게 "더티"영역의 창을 제거해야하는 컨테이너를 다시 칠하도록 요청을 보냅니다.
+0

죄송합니다. 귀하의 답변을 더 빨리 알 수 없었습니다. 그것은 그것이 종처럼 울리는 것을 만든다! 감사합니다. –

+0

@ SamuelDumont : 천만에요. –