如何在JavaSwing中获取面板的所有组件?

如何在JavaSwing中获取面板的所有组件?,java,arrays,swing,jpanel,jcomponent,Java,Arrays,Swing,Jpanel,Jcomponent,如何在JavaSwing中获取面板的所有组件 有没有像C中的foreach这样的方法来处理JPanel的所有子组件?您可以使用以下方法: 如果您有多个JPanel,并且希望获得所有组件的名称,请尝试以下操作: public void getAllComponetsNameInJPanels(JPanel... panels) { Component[] components; String componentName; for (JPanel panel : panels

如何在JavaSwing中获取面板的所有组件

有没有像C中的
foreach
这样的方法来处理JPanel的所有子组件?

您可以使用以下方法:


如果您有多个JPanel,并且希望获得所有组件的名称,请尝试以下操作:

public void getAllComponetsNameInJPanels(JPanel... panels) {
    Component[] components;
    String componentName;
    for (JPanel panel : panels) {
        components = panel.getComponents();            
        for (Component compo : components) {
            componentName = compo.getClass().getName();
            System.out.println(compo.getClass().getName().substring(componentName.indexOf("swing.") + "swing.".length(), componentName.length()));
        }
        System.out.println("=====================");
    }
}

在提问之前,有时尝试显而易见的东西是值得的…:)你知道有api文档,是吗:-)提示:再看看从super继承的方法。这将得到子组件,但不是那些组件的子组件。例如,如果您的面板具有容器,如CollappablePanel,则集合
组件
将包含对该CollappablePanel的引用,但不包含其子组件。
public void getAllComponetsNameInJPanels(JPanel... panels) {
    Component[] components;
    String componentName;
    for (JPanel panel : panels) {
        components = panel.getComponents();            
        for (Component compo : components) {
            componentName = compo.getClass().getName();
            System.out.println(compo.getClass().getName().substring(componentName.indexOf("swing.") + "swing.".length(), componentName.length()));
        }
        System.out.println("=====================");
    }
}