Creación de objetos en ejecución

Buenos días, como puedo crear objetos en tiempo de ejecución, me explico

Por ejemplo tengo una tabla con los siguientes campos:
 

Yo al entrar la primera vez recorrer la tabla e ir añadiendo esos objetos en mi JFrame, Esto lo puedo hacer ahora mismo en FoxPro y resulta bastante cómodo, ya que un cliente necesita 3 campos más y solo tengo que entrar en esa tabla y añadirlos.

No se si me he explicado bien, el problema que yo veo es como ir dándoles el nombre "JTextField1", "JTextField2", etc...

Perdonen tantas molestias, pero cuando tenga todo esto terminado lo pondré aquí para que otros aprendan.

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 Sr. Negativo

Es mejor aprender lo básico de Java

No es malo preguntar, pero andas muy perdido, es mejor conocer el lenguaje, leer y practicar mucho, además Google ayuda mucho.

Tiene que ver con arrays de objetos Aqui

 

Buenos días, sigo sin saber

Buenos días, sigo sin saber como puedo hacer lo de crear objetos dinámicamente o si no se puede, pondré un ejemplo completo de lo que hago:

1º Tengo una tabla que tiene los siguientes campos y rellena:
 

2º Yo cuando ejecuto mi aplicación hago lo siguiente:
 

Ahora mi pregunta es, si tengo que añadir 50 JTextField, el SWITCH sería muy grande.

Se podría hacer que si tengo 20 registros en la tabla me cree 20 JTextField y si tengo 12 me cree 12. No se si me explico, pero esto mismo es lo que yo quiero conseguir, de esta forma yo puedo mover los controles por la pantalla en tiempo de ejecución y al salirme guardarlos con la nueva posición.

Espero su ayuda.

Un saludo

Imagen de ezamudio

JTable

Has probado ya la clase JTable? Esa es muy utilizada para mostrar varios registros y puede ser editable.

Imagen de neko069

Tutorial tablas

El tutorial oficial de manejo de tablas de Obstacle está bastante completo ;-)

Ahora, modificando tú código, lo que yo haría sería algo así:

 

Digo, es una solución medio puerca .... ok, ok bastante puerca, pero te va a sacar del apuro
mientras estudias el tutorial que te pasé.

Buenos días, creo que no me

Buenos días, creo que no me habeis entendido.

Yo tengo una tabla rellena con el nombre del JFrame, nombre del control, y posición del control dentro del JFrame.

Luego tengo un JFrame vacio, sin nada, y lo que quiero es que al iniciar el JFrame se recorra la tabla y me vaya creando dentro del JFrame los controles que yo tengo.

Por ejemplo el primer registro es:

 

Pues me tiene que crear un JTextField en la posición 10,10 y con un ancho de 120 y ponerle una etiqueta "Nombre". Todo esto lo tengo ya listo lo que no se es como hacer para ir agregando esos controles.

Si yo hago lo siguiente:
 

Luego mediante un SWITCH puedo ir mirando si es JTextField1, JTextField2, JTextField3, etc..., y lo hago para 10, pero si yo añado algún registro más en la tabla y quiero añadir ese nuevo objeto en el JFrame, tendría que modificar el código y meter un nuevo objeto JTextField11.

No se si me entendeis.

Un saludo

Imagen de paranoid_android

Otras ideas

Como menciono ezamudio sería más fácil con una tabla, pero aquí te doy otra idea si estas buscando crear Paneles dinámicos.

Esta forma es muy flexible pero al mismo tiempo muy trabajosa se podría intentar lo siguiente

Sé que existe una manera de crear objetos anónimos, tendrías que investigar cómo recuperarlos del contenedor.
Las clases de swing tienen una propiedad que se llama “name” (setName(), getName()), en lugar de accederlos por su referencia se puede preguntar por esta propiedad.
IMPORTANTE: Esto es solo a nivel de concepto este código no está comprobado podría ser algo así como
 

Muchas gracias, he probado de

Muchas gracias, he probado de la siguiente manera:

 

Y me agrega los controles perfectamente, todos los que tenga en la tabla, pero ahora me surge otro problema que no se como solucionar.

Los controles se agregan con la propiedad enabled(false), y tengo un botón que lo que quiero es poner los controles JTextField habilitados, o sea enabled(true), pero no se como hacer ahora para ir recorriendo esos controles que tengo en mi JFrame e ir cambiando la propiedad enabled

Un saludo

Buenos días, alguien puede

Buenos días, alguien puede decirme como saber, en modo ejecución, cuantos controles tengo en un JFrame y sus nombres para cambiarles una propiedad si es de un tipo u otro

Un saludo

Muchas gracias, pero ese

Muchas gracias, pero ese ejemplo es para saber los componentes de un JPanel y yo quiero saber los componentes que estén directamente en un JFrame

Imagen de neko069

@jpablo2003

Y te tomaste la molestia de cambiar el panel que viene en el ejemplo por tu frame? Si mal no recuerdo, debería de ser transparente.

Claro que me tome las

Claro que me tome las molestias.

Aparte yo mi JFrame lo creo desde NetBeans 7.2, y luego no se como se llama para ponerlo en lugar del JPanel. He probado con JFrame, jFrame, frame1, frame2, frmClientes (que es como lo tengo guardado), pero nada.

Gracias de todas formas.

Recién le estoy poniendo

Recién le estoy poniendo atención a este hilo.

Lo que tendrías que haber explicado antes es que estás queriendo persistir el layout de una ventana para después reconstituirla.

Usar una tabla de base de datos puede ser una mala opción porque cuesta más trabajo representar las jerarquías ( como ya pudiste date cuenta ), una mejor opción es usar JSON o ya de plano XML, existen muchos frameworks que te permiten guardar el layout en XML.

Para tu pregunta específica ya Mr- te había dicho que usaras arreglos ( o una lista ):

 

Así si tienes 50 registros, creas 50 elementos y los pones en esa lista. Si son solo 20 pues 20 y ya. No tienes que crear una interfaz con todos las variables si no sabes cuantas serán.

Revisandolo bien , ni siquieras necesitas la lista, porque el contendor a donde los vas a agregar ya tiene un lugar donde guardarlos. Cuando los quieras obtener se los pides al contenedor:

 

Para identificarlos les puedes poner un nombre con el método

 

Entonces quedaría algo así:

 

Y ya, no necesitas crear una variable en tu código por cada elemento.