2012-09-13 4 views
0

저는 JFrame을 가지고 있으며 이것을 메인 프레임으로 사용하고 동일한 JFrame 내에서 JPanels를 변경합니다. 첫 번째 JPanel은 이미 JFrame 안에 있으므로 "this"가 JFrame 자체를 호출하기 때문에 "this.removeall(), then, this.setContentPane (new JPanel2)"로 바꿀 수 있습니다.JFrame이 아닌 JPanel 내부의 JButton에서 현재 JPanel 바꾸기

다른 JPanel에서는 현재 JPanel을 다른 JPanel로 바꾸는 JButton을 만들고 싶습니다. 문제는 "this"가 JFrame이 아닌 JPanel을 호출하기 때문에 이전에 동일한 코드를 수행 할 수 없다는 것입니다.

질문은 어떻게 JPanel 안에 코드를 작성하여 JFrame이 "setContentPane"을 변경하여 두 번째 패널을 볼 수있게 할 수 있습니까?


나는 ...이 비디오는 나에게 문제

CardLayout on Netbeans video

+1

가 왜'CardLayo 사용하지 @AndrewThompson 더 언급

로 시간과 같은 마지막 코드 라인 한 번, 가장 쉽고 simpliest 방법은 CardLayout를 사용할 수 패널의 그 그룹을위한 "ut? –

+0

@ AndrewThompson- 인터페이스의 디자인에서 CardLayout이나 Tabs가 아닌 Button을 사용했습니다. 모든 응용 프로그램 패널을 하나의 JFrame에서 하나씩 변경하고 싶습니다. –

+0

Jamrame이 아닌 JPanel 자체의 버튼 안에 JPanels를 변경하는 코드를 작성하고 싶습니다. - @AndrewThompson –

답변

2

나는 JPanel의에서 buttonActionListner의 코드를 작성하려는를 해결 도움이 CardLayout을 사용하여 답을 발견했다. 그래서 모든 JPanel에 다른 하나를 CardLayout 독립적으로

@ AndrewThompson이-에서 인터페이스의 디자인 우리가 사용하는 버튼을하지 전화를 추가 및 제거 할 수 있으며, JFrame의에서 그 코드를 작성하지 않습니다 또는 탭. 난 단지, 후

validate(); // for Java7 revalidate() for JFrame 
repaint(); 

는 새로운 JPanel을 추가, 제거,

부모 ( JFrame, JPanel)를 요구해야 JFrame의 모든 응용 프로그램 패널을 하나에 하나씩 변경을 원

+0

좋아요,하지만 현재 JPanel의 JFrame을 어떻게 호출 할 수 있습니까? –

+0

JFrame의 인스턴스를 생성하는 것은 JFrame을 위해 확장되지 않습니다.이 경우 결코 그렇듯이 보이지 않습니다. 제거하려는 하위 패널을 보유하고있는 아버지 패널을 놓으십시오. 이것은 GUI 빌더를 사용하는 데 대한 세금입니다. – mKorbel

+0

감사합니다. CardLayot를 사용하고 문제가 해결되었습니다. –