2011-02-13 1 views
2

Java Java GUI 코드 중 하나에서 JTabbedPane을 사용합니다. 다음 코드 부분을 사용하여 tabpane을 인스턴스화하고 유지 관리합니다.JTabbedPane 구성 요소에 액세스

JTabbedPane tabpane = new JTabbedPane(); 
PageViewer pv = new PageViewer(); 
tabpane.addTab("tabttitle", new JScrollPane(pv)); 

PageViewerJEditorPane의 확장 클래스입니다. 현재 선택된 탭의 구성 요소 PageViewer pv 구성 요소에 액세스하여 수정하려고합니다. 나는 ind의 몇 가지 값으로 다음 코드 행을 시도했다.

JScrollPane jsp = (JScrollPane) tabpane.getComponentAt(tabpane.getSelectedIndex()); 
PageViewer pv2 = (PageViewer) jsp.getComponent(ind); 

그러나 ind==0 컴파일러

"java.lang.ClassCastException: javax.swing.JViewport cannot be cast to menu_window.PageViewer"을 말한다.

ind==1의 경우는 "java.lang.ClassCastException: javax.swing.JScrollPane$ScrollBar cannot be cast to menu_window.PageViewer"입니다.

ind==2의 경우 출력은 "java.lang.ClassCastException: javax.swing.JScrollPane$ScrollBar cannot be cast to menu_window.PageViewer"입니다.

ind>=3의 경우 오류는 "java.lang.ArrayIndexOutOfBoundsException: No such child: 3"입니다.

이제 어떻게하면 도움이되는지 알고 있다면 원하는 작업을 수행 할 수 있습니다.

참고 : Java 6 Standard Edition과 함께 NetBeans 6.8을 사용합니다.

답변

3

컴퍼넌트 주위에 JScrollPane를 작성하면, 스크롤 구획은 실제로 컴퍼넌트를 내부 JViewPort에 추가합니다. 스크로 르 페인에서 원본 구성 요소를 가져 오려면 다음을 수행하십시오.

PageViewer pv2 = (PageViewer)jsp.getViewport().getView(); 
+0

예! 당신 말이 맞아요. 이제 작동합니다. 감사. –