2012-03-29 4 views
1

Java 응용 프로그램 용 GUI를 만들고 있습니다. 내가 뭘 하려는지 프레임을 가지고 있으며, 사용자 작업을 기반으로 표시되는 패널을 변경합니다. 비록 내가 같은 것을 할 경우 :프레임 내용 변경

private void setFrameContent(Container content) { 
     appFrame.setContentPane(content); 
    } 

나는 JPanel 표시되고 변경하려고하면 프레임이 바로 정지됩니다. 이것에 약간 변이를 또한 시도했다.

프레임의 내용을 어떻게 변경해야합니까?

하나의 옵션은 CardLayout이지만 일부는 사용되지 않을 수도 있지만 앱 시작시 모든 패널을 만들어야한다는 것을 의미합니다. 이것을 달성하기위한 또 다른 방법은 무엇입니까? 당신은 이미 눈에 보이는 컨테이너에 JComponent를 추가하는 경우

+0

* "하나의 옵션은 CardLayout 것하지만 내가 앱 시작시 모든 패널을 생성해야 의미 "* 나는하지 않아도된다. 당신은 잘못하고 있어야합니다. –

+1

예 나중에 런타임에 패널을 추가 할 수 있음을 깨달았습니다. – Giannis

+0

다행 이군. :) –

답변

2

1), 당신은 귀하의 경우, revalidate()repaint()을 요구해야 Java7에 대한

  • 직접 JFrame

  • revalidate()repaint()이 implemeted한다
  • (Jav6 이하) revalidate()repaint()ContentPane

  • 나는 아직도 CardLayout()가 스윙 GUI에 betweens Views 전환을위한 더 나은 옵션이 될 수 있다고 생각 (10)

2)

+0

런타임 중에 CardLayout에 내용을 추가하고 표시하는 방법을 생각했습니다. 맞춰야 할 것 같아요 – Giannis

+0

CardLayout은 런타임시 하나의 JFrame에서 두 개 이상의 CardLayout을 변경하거나 교환하지 않고 JFrame에 추가 한 뷰입니다. – mKorbel