2011-02-13 86 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