Saltar al contenido

Java obtener componentes JPanel

Te sugerimos que revises esta respuesta en un ambiente controlado antes de pasarlo a producción, saludos.

Solución:

Cada JPanel en Java también es un contenedor AWT. Por lo tanto, debería poder usar getComponents para obtener el array de componentes contenidos en el panel, repita sobre ellos, verifique sus tipos (para asegurarse de que no obtuvo otros controles) y haga lo que necesite con ellos.

Sin embargo, esto es generalmente un mal diseño. Si sabe que necesitará acceder a componentes específicos, es mejor mantener un array de esos campos de texto y páselo, aunque estén contenidos visualmente dentro del contenedor.

Si se trata de una tarea recurrente o se puede realizar desde varios puntos, incluso puede tener sentido tener una clase especial que represente un panel con campos de texto, que luego proporcionará a través de su interfaz medios para acceder a estos campos.

Bueno, tenga en cuenta que no llegaron solos (creo que leí algunas preguntas sobre la creación dinámica de estos paneles en tiempo de ejecución)

En las respuestas publicadas allí, alguien dijo que debería mantener la referencia a esos campos de texto en un array. Eso es exactamente lo que necesitas aquí:

List list = new ArrayLists();

// your code...
for (int i=0; i

// Luego

for( JTextField f : list )  
   System.out.println( f.getText() ) ;

¿No fue fácil?

Solo recuerde mantener este tipo de artefactos ( lista ) lo más privados posible. Son solo para su control, no creo que pertenezcan a la interfaz.

Digamos que quieres obtener el array de textos, en lugar de

 public List getFields();

Deberías considerar:

 public List getTexts(); // get them from the textfields ... 

Esto es lo que hice para recorrer recursivamente el contenedor y obtener los campos de texto que están en los JPanels.

private void ClearAllFields(Container myContainer) 

    Component myComps[] = myContainer.getComponents();

    for (int i=0; i

Y luego para usarlo, lo llamas así

ClearAllFields([jdialog or jframe etc].getContentPane());

Tienes la posibilidad compartir esta división si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Respuestas a preguntas comunes sobre programacion y tecnología