JTabbedPane组件访问

时间:2011-02-13 15:00:31

标签: java swing jtabbedpane

我在我的一个Java GUI代码中使用JTabbedPane。我使用以下代码部分来实例化和维护tabpane

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"

如果有人知道请帮助,我现在该如何完成所需的工作。

注意:我将NetBeans 6.8与Java 6标准版一起使用。

1 个答案:

答案 0 :(得分:3)

在组件周围创建JScrollPane时,滚动窗格实际上将组件添加到内部JViewPort中。要从滚动窗格中获取原始组件,您可以执行以下操作:

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