2011-03-12 3 views
3

나는 꽤 예쁘다. 자바 스윙, CardLayout을 사용하고 있습니다. 이 응용 프로그램에서 사용자는 활동을 만들고 다른 JPanel에서는 기존 활동을 볼 수 있습니다.Java Swing - CardLayout, 실행 중에 카드를 업데이트하는 방법은 무엇입니까?

레이블이있는 카드를 업데이트하는 데 문제가 있습니다. 액티비티를 추가하면 앱을 다시 시작할 때 제대로 작동합니다. 다시 시작하지 않아도되는 방법을 찾고 있습니다.

간단히 말해, 새 레이블 데이터가 표시되도록 패널을 재구성/업데이트해야하는 경우를 알고 싶습니다.

미리 감사드립니다.

+0

당신은 EventDispatchThread로의 활동을 추가 SwingUtilities.invokeLater (...)? – u449355

+0

아니요, 실제로 업데이트 할 방법을 구현하지 않았기 때문에 귀하의 방법을 알 수 없습니다 .. – belens

답변

9

당신은 당신이 레이아웃 매니저를 호출 할 수 있도록 구성 요소가 추가 된 것을 GUI를 알려줄 필요가 보이는 GUI에 구성 요소를 추가 할 때 :

panel.add(component); 
panel.revalidate(); 
+0

당신의 대답이 내 문제를 해결했습니다 !! 덕분에 XD 나는 이걸로 고군분투했습니다 – belens

+0

나는 직원 정보를 삽입하는 패널이 하나 있습니다. 그리고 직원 목록을 표시하는 또 다른 패널. 둘 다 카드 레이아웃에 있습니다. 새 직원을 삽입 한 후 직원 목록을 표시하는 다음 패널을 표시하지만 직원 목록은 다시 표시하지 않습니다. 어떠한 제안? –

0

당신이 찾고있는 것이 Observer 디자인 패턴 인 것 같습니다.

기본적으로 모든 패널을 추가하는 Observer 인스턴스가 하나 있습니다. 패널에서 값을 업데이트하면 Observer가 변경된 것이 전혀 없습니다. Observer는 관찰 된 모든 패널에게 값이 변경되었음을 알리고 값을 업데이트합니다.

http://en.wikipedia.org/wiki/Observer_pattern

관련 문제