style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Ayuda al crear objetos

Buenas tardes, yo en un formulario introduzco 4 JTextField de la siguiente manera:

while (rs.next()) {
     nVuelta += 1;
                   
     nXPanel = result.getInt("xpanel");
     nYPanel = result.getInt("ypanel");
     nYText = result.getInt("ytext");
     nWText = result.getInt("wtext");
     nHText = result.getInt("htext");
     cEtiqueta = result.getString("etiqueta");

     String cName = String.format("txt%d", nVuelta);
                   
     txt = new LabelText(nXPanel, nYPanel, nYText, nWText, nHText, cEtiqueta, cName);
     add(txt);
}

Los datos los cojo de una tabla, y se me colocan todos bien en mi formulario. Mi pregunta es cuando pulse un botón de modificar, como hago para que todos esos controles se me activen, ya que si hago lo siguiente:

txt.setEnabled(true);

Solo se me activa el último que he introducido.

Gracias y un saludo.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Puedes obtener todos los

Puedes obtener todos los componentes de tu JFrame, y mediante un ciclo, checar si son del tipo que necesitas (JTextField) y hacer lo que necesitas:

Component[] losComponentesDeTuJFrame=elJFramePapaDeLosPollitos.getContentPane().getComponents();

for(Component c : losComponentesDeTuJFrame){
    if( c instanceof JTextField){
        ((JTextField)c).setEnabled(true);
    }
}

Algo así.

Buenos días, estoy probando

Buenos días, estoy probando el ejemplo que me pusiste pero en ningún caso me sale la propiedad "getContentPane()" ni la propiedad "getComponents()".

He probado con "frmClientes.getComponents()" y con "JFrame.getComponents" y no me aparecen esas propiedades.

Espero que me ayuden, seguro que alguien esto lo ha hecho alguna vez para recorrer los componentes de un formulario.

Un saludo.

Lo que sucede qes que solo

Lo que sucede qes que solo tienes una variable ( llamada txt ) y en cada vuelta le asignas un valor nuevo.

Imagina lo siguiente:

semana  = [lun, mar, mie, jue, vie, sab, dom]
dia = nada
while ( semana.next() ) {
    dia = semana.getBlah()
}

Al final del ciclo dia tiene como valor dom.

Lo que necesitas hacer como dice neko (indirectamente) es mantener esos txt en una lista/arreglo/algo y luego iterarlos

List<LabelText> list = new ArrayList<>();
while ( rs.next() ) {
     list.add( createTxtWith(rs)); // aqui llamas a rs.getInt("xpanel"); rs.getInt("ypanel"); etc. etc.
}
/// Aqui tu lista tiene todas los textos
// para activarlos:
for ( LabelText t : list ) {
   t.setEnabled(true);
}
Imagen de neko069

Más que indirectamente

Lo que dice Oscar es cierto (indirectamente ;-) ) porque puedes crear dinámicamente en tu ciclo while un montón de objetos JTextField PERO si los declaras e inicializas dentro del ciclo;

while (rs.next()) {
  //declaras y creas el objeto con las propiedades sobre el mismo ciclo

     JTextField txt = new LabelText( //dependiendo el estilo de programacion, puedes usar las propiedades que quieres sin necesidad de crear variables temporales ;-)
           result.getInt("xpanel");
          ,result.getInt("ypanel");
          ,result.getInt("ytext");
          ,result.getInt("wtext");
          ,result.getInt("htext");
          ,result.getString("etiqueta");
          ,String.format("txt%d", nVuelta);          
     );
//este metodo add de quién es? un JFrame, JInternalFrame o JPanel  ????
     add(txt);

Al componente que le estás agregando tus JTextField es el que funge como contenedor, supongamos que es un JPanel, entonces, checando el JavaDoc de la clase, se nota que tiene un método getComponents el cual te regresa un arreglo de Componentes, y sobre ése puedes aplicar el ciclo que te escribí en el ejemplo anterior. Como nota adicional, sobre las clases JFrame y JInternalFrame sí existe el método getContentPane así que lo más seguro es que estés usando un JPanel como contenedor.

Tomando la idea de Oscar, es que cada vez que crees un JTextField lo guardes en una lista (o arreglo o collection o mapa o whatever ) y así ya sólo tendrías que buscar directamente sobre tu lista el JTextField que necesitas, buscándolo por el nombre que le otorgas al principio.
De cualquier forma tienes que hacer un ciclo, de éso no te salvas :-)

Espero no haberte revuelto más, saludos.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">