2009-03-06 5 views
1

현재 스윙에 확장 패널 (WPF의 Expander 컨트롤과 유사)을 구축하려고하고 있는데,이를 조작하기위한 일반적인 방법을 유지하고자합니다 (예 : setLayout, add , 등). 오직 그들이 내장 된 패널 (보이거나 숨겨지는 패널)로 라우팅되어야합니다.스윙에서 JPanel을 서브 클래 싱하는 가장 좋은 방법

어떻게하면됩니까? JComponent의 모든 메소드를 오버라이드하고 이것을 임베드 된 JPanel으로 다시 라우팅하는 것은 번거롭지 만 그것이 내가 보는 유일한 방법입니다.

대신 외부 패널을 외부 패널에 보이게하고 사용자가 ExpanderPanel.getInnerPanel()과 같은 것을 사용해야합니다. 그렇다면 JPanel을 대체 할 수는 없지만 좋은 생각입니다.

답변

1

1.5 (ish) 스윙은 내용 창에 몇 가지 메서드를 JFrame, JApplet 등으로 라우트했습니다. 시작한 사람들에게 유용성이있는 것처럼 보였지만 실제로 문제를 해결하지는 않습니다. 그래서 모두가 매우 이상하게 행동하는 API를 다루어야합니다. 그래서 저는이 접근법을 피하는 것이 좋습니다.

2

XXTaskPaneSwingx 프로젝트를 살펴보십시오. 그것은 이미 당신이 필요로하는 것을합니다.

+0

JNI 또는 라이브러리 의존성없이 코드가 일반 Java에서 실행되어야하므로 여기에서 요구 사항을 충족시켜야합니다. – Joey

0

표시하고 숨기려는 패널이있는 컨테이너 위젯이있는 경우 원하는 경우 내부 패널을 배치 한 다음 컨테이너 패널에 추가 한 다음 컨테이너에 정적 메소드를 사용하여

JPanel p = 새 JPanel(); // JPanel을 사용하여 작업 수행 ...

ContainerWidget.setContent (p);

ContainerWidget.expandPanel (p, true);

이 작품과 비슷한 모양일까요?

관련 문제