2011-06-26 26 views
3

我认为我们可以使用jScrollPane.getComponents()来获取jscrollpane的awt组件。 我的问题是:有没有办法让一个容器的摆动组件如何?获取容器中的所有摆动组件

+4

Swing组件扩展了AWT组件。 (所以'getComponents()'报告两者)。 –

+0

通常情况下,您最好持有对重要组件的引用,而不必通过嵌套容器递归以便在干草堆中找到针。 –

+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

您可以拨打getComponents然后进行测试,看它是否是JComponent一个实例。方法如下:

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

这与其他答案基本相同,直到我发布我的报告之后,我才看到其他答案。 –