3

JTabbedPaneは自分のJavaGUIコードの1つで使用しています。コードの次の部分を使用して、をインスタンス化して維持しtabpaneます。

JTabbedPane tabpane =  new JTabbedPane();  
PageViewer pv = new PageViewer();  
tabpane.addTab("tabttitle", new JScrollPane(pv));

PageViewerの拡張クラスですJEditorPanePageViewer 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 6StandardEditionでNetBeans6.8を使用しています。

4

1 に答える 1

3

コンポーネントの周囲にJScrollPaneを作成すると、スクロールペインは実際にコンポーネントを内部JViewPortに追加します。スクロールペインから元のコンポーネントを取得するには、次のようにします。

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