3

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".

现在我该如何做我想要的工作,如果有人知道请帮忙。

注意:我使用带有 Java 6 标准版的 NetBeans 6.8。

4

1 回答 1

3

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

PageViewer pv2 = (PageViewer)jsp.getViewport().getView();
于 2011-02-13T15:10:35.823 回答