Obtener componentes de un objeto de componentes?

Estoy tratando de escribir lo siguiente solo para mi interés:

public void enableComponents(boolean enable) {
    Component[] components = getContentPane().getComponents();

    for (int i = 0; i < components.length; ++i) {
        components[i].setEnabled(enable);
    }
// [...]

En la matriz "Componente []" puede, por ejemplo, también un JPanel que contiene más elementos GUI. Pero, ¿cómo podría acceder a ellos? ¿No hay ningún método como "components [i] .getCOmponents ()"?

Respuesta 1

El diseñador awt hace que la clase Contenedor sea un tipo especial de Componente, lo cual tampoco sé por qué, pero puede aprovechar esta característica.

Para encontrar todos los subcomponentes, puede verificar si el componente es un contenedor. Si no es así, no puede tener subcomponentes. Si es así, entonces envía al Contenedor y accede a ellos. Repita si necesita subcomponentes también.

Component[] components = getContentPane().getComponents();

for (int i = 0; i < components.length; ++i) {
   if ((components[i] instanceof Container)) {
       Container subContainer = (Container)components[i];
       //do something here
   }else{
       //do something here
   }
}
Respuesta: 2

Los componentes están contenidos por Container. Panelse extiende Container, por lo tanto, puede obtener sus componentes. Entonces, para obtener subcomponentes, debe convertir el componente a Contenedor (si es una instancia de Contenedor):

public void enableComponents(boolean enable) {
    enableComponent(getContentPane());
}


public void enableComponent(Component component, boolean enable) {
    component.setEnabled(enable)

    if (component instanceof Container) {
        Container container = (Container)component;
        for (Component c : container.getComponents()) {
             enableComponent(c, enable);  // recursive call
        }
    }
}
Respuesta: 3
Component[] components = getContentPane().getComponents();
 for (int i = 0; i < components.length; ++i) {
    components[i].setEnabled(enable);
  }
Arrays.asList(components).get(1);
Respuesta: 4

Necesito crear un programa que calcule el cambio que recibiría, pero dice: Excepción en el hilo "main" java.lang.ArrayIndexOutOfBoundsException: Índice 9 fuera de los límites para la longitud 5 ...

Tengo un programa Java para descargar una página web, analizar la página web en busca de imágenes y mostrar el orden en que están en el sitio web. Lo que necesito es que el programa también muestre los tamaños de archivo de cada ...

Lo intenté todo Pero no puedo resolverlo. Siempre me dice que no funcionan ---> mToolbar y Toolbar <--- import android.os.Bundle; importar android.view.MenuItem; importar android.view.View; ...

Tengo un proceso BPEL que invoca un servicio web asíncrono en Java. Tengo un problema para volver a llamar al proceso BPEL cuando finalizo. Recibo un error de tiempo de espera esperando una respuesta. Intenté ...