2011-06-26 8 views
3

jScrollPane.getComponents()を使用してjscrollpaneのawtコンポーネントを取得できると思います。 私の質問です:コンテナのスイングコンポーネントを取得する方法はありますか?コンテナ内のすべてのスイングコンポーネントを取得する

+4

スイングコンポーネントはAWTコンポーネントを拡張します。 (したがって 'getComponents()'は両方を報告します)。 –

+0

干し草の中で針を見つけるために、ネストされた容器を通して再帰する必要がなく、重要な構成要素への参照を保持する方がよい場合がよくあります。 –

+2

これまでのところ、2つの答えは再帰を使用せず、JScrollPaneのJViewport以外何も得られないことに注意してください。 –

答えて

2

すべてのSwingコンポーネントは、JComponentを拡張します。

Component[] comps = jScrollPane.getComponents(); 
ArrayList<JComponent> swingComps = new ArrayList<JComponent>(); 

for(Component comp : comps) { 
    if(comp instanceof JComponent) { 
      swingComps.add((JComponent) comp); 
    } 
} 
1

あなたはそれがJComponentのインスタンスであるかどうかを確認するためにテストし、その後getComponentsを呼び出すことができます。メソッドは次のようになります。

ArrayList jcomponents = new ArrayList(); 
for (Component c : container.getComponents()) 
{ 
     if (c instanceof JComponent) 
     { 
      jcomponents.add(c); 
     } 
} 
+1

これは本質的に他の答えと同じです。 –

関連する問題