Доступ к компоненту JTabbedPane - PullRequest
2 голосов
/ 13 февраля 2011

Я использую JTabbedPane в одном из моих кодов Java GUI.Я использую следующую часть кода для создания и поддержки 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.

1 Ответ

3 голосов
/ 13 февраля 2011

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

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