2011-02-13 73 views
2

我在我的一个Java GUI代码中使用了JTabbedPane。我使用下面的代码部分来实例化和维护tabpaneJTabbedPane组件访问

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。

回答

3

当您围绕组件创建JScrollPane时,滚动窗格实际上会将该组件添加到内部JViewPort中。要从滚动窗格中获取原始组件,您可以这样做:

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

是的!你是对的。它现在有效。谢谢。 – 2011-02-13 16:49:54