Доступ к компоненту JTabbedPane

Я использую JTabbedPane в одном из своих кодов графического интерфейса Java. Я использую следующую часть кода для создания и поддержки файла tabpane.

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

PageViewer является расширенным классом JEditorPane. Я хочу получить доступ и изменить компонент 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".

Теперь как мне сделать нужную работу, если кто знает, пожалуйста, помогите.

Примечание. Я использую NetBeans 6.8 с Java 6 Standard Edition.


person f.nasim    schedule 13.02.2011    source источник


Ответы (1)


Когда вы создаете JScrollPane вокруг компонента, панель прокрутки фактически добавляет компонент во внутренний JViewPort. Чтобы получить исходный компонент из области прокрутки, вы можете сделать это:

PageViewer pv2 = (PageViewer)jsp.getViewport().getView();
person gcooney    schedule 13.02.2011