Foros del Web » Programación para mayores de 30 ;) » Java »

Añadir objetos dinamicamente a un JFrame

Estas en el tema de Añadir objetos dinamicamente a un JFrame en el foro de Java en Foros del Web. Hola de nuevo! Si tengo un formulario (un JFrame) cómo añadir en tiempo de ejecución objetos JTextField a ese JFrame? Por ejemplo, después de definir ...
  #1 (permalink)  
Antiguo 09/11/2006, 06:26
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
Añadir objetos dinamicamente a un JFrame

Hola de nuevo!

Si tengo un formulario (un JFrame) cómo añadir en tiempo de ejecución objetos JTextField a ese JFrame?

Por ejemplo, después de definir el número de elementos (introducido por el usuario), usar un while que añade al JFrame y coloca esos JTextField uno a uno. ¿Serían tan amables de ponerme un ejemplo?

Gracias y un saludo.
  #2 (permalink)  
Antiguo 09/11/2006, 07:06
 
Fecha de Ingreso: septiembre-2005
Ubicación: Madrid, España
Mensajes: 18
Antigüedad: 18 años, 7 meses
Puntos: 0
Añadir objetos a un jframe

Es basicamente como tu has comentado, no tengo ningun ejemplo funcionando de como hacerlo con un while, pero este video de aqui te puede dar una idea de como añadir al JFrame en ejecucion distintos elementos.

Lo que tendrias que hacer es rodear el add con un while y pedirle al usuario que te indique que elementos quiere añadir.

Recuerda que cuando termines de añadir debes actualizar el objeto contenedor (tu JFrame) o sino no se mostrara ningun boton.

Mira este video:
youtube.com/watch?v=J0u_yf5CZNE
  #3 (permalink)  
Antiguo 09/11/2006, 09:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
creo q a lo q se refiere bauhaus1975 es al mismo problema que me estoy encontrando yo, crear elementos en tiempo de ejecución mas o menos se, pero lo q pretendo hacer es lo siguiente:
Código:
	private void buildOtions(ArrayList puertos, CheckboxGroup grupo)
	{	
		try
		{	int tamanyo=puertos.size()-1;
		
			for(int i=0; i<tamanyo; i++)
			{	checkes.add((Checkbox) new Checkbox((String)puertos.get(i), grupo,false));
				System.out.println(puertos.get(i));
			}
			
			tamanyo=checkes.size()-1;
			for(int i=0; i<tamanyo; i++)
			{	frame.add((Checkbox)checkes.get(i));
			}		
		}catch(Exception e)
		{	System.out.println("ERROR:"+e.getMessage());
		}
	}
Pretendo ir creando checkbox y los guardo en un arrylist, luego recorro ese arraylist y voy añadiendo cada checkbox al frame, pero al ejecutarse el frame aparece
vacio (no añado ni intento añadir nada mas que todo esto)...
Ademas el flujo del programa se me va hacia el catch soltando esto--> ERROR:null
Que hago mal?

Sin Embargo si pongo lo siguiente:
Código:
private void buildOtions(ArrayList puertos, CheckboxGroup grupo)
	{	
		try
		{	int tamanyo=puertos.size()-1;
		
			for(int i=0; i<tamanyo; i++)
			{	frame.add((Checkbox) new Checkbox((String)puertos.get(i), grupo,false));
				System.out.println(puertos.get(i));
			}
		}catch(Exception e)
		{	System.out.println("ERROR:"+e.getMessage());
		}
	}
Tán solo me muestra el ultimo elemento de la lista (aunque me imprime en consola todos los elementos existentes en puertos (3)

Última edición por clinisbut; 09/11/2006 a las 10:29
  #4 (permalink)  
Antiguo 09/11/2006, 12:24
 
Fecha de Ingreso: septiembre-2005
Ubicación: Madrid, España
Mensajes: 18
Antigüedad: 18 años, 7 meses
Puntos: 0
Causa posible: el Layout.

El primer codigo puede fallar por varios motivos, depura el codigo o trazealo y comprueba la longitud de puertos y cheques, podria diferir.

En el segundo codigo deberias comprobar que tipo de Layout estas empleando, quizas en realidad estas situando todos los elementos pero los estas poniendo uno sobre otro, usa por ejemplo GridLayout y dime si te ha funcionado.

Un saludo.
  #5 (permalink)  
Antiguo 10/11/2006, 01:19
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Ostras esq estoy muy pez con esto de java, hace poco que he comenzado y veo un mundo inmenso que no se acaba nunca...
Buscare eso de cambiar el Layout que no se como se hace
  #6 (permalink)  
Antiguo 10/11/2006, 01:33
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Ok, ya lo probé y funcionó perfectamente
Muchas gracias.
De hecho lo que ocurria es que no tenia definido ningún Layout, deberia de ser eso supongo.. ya digo que justo estoy empezando con java
  #7 (permalink)  
Antiguo 10/11/2006, 03:11
 
Fecha de Ingreso: diciembre-2004
Mensajes: 278
Antigüedad: 19 años, 4 meses
Puntos: 0
Una pregunta q me ha surgido... Al final he hecho esto...

Código:
try
{	int tamanyo=puertos.size()-1;
	JComboBox comboPuertos = new JComboBox();
	comboPuertos.setSize(100,20);
	for(int i=0; i<tamanyo; i++)
	{	System.out.println(puertos.get(i));
		comboPuertos.addItem((String)puertos.get(i));
	}
	window.add(comboPuertos);
}catch(Exception e)
{	System.out.println("ERROR:"+e.getMessage());
}
Si no instancio los items del combobox, tendré problemas para conocer el valor seleccionado mas tarde a partir de un listener?
Si es asi, como los instancio dinamicamente?
  #8 (permalink)  
Antiguo 10/11/2006, 04:25
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
Hola de nuevo y gracias a todos por vuestra ayuda.

Finalmente este es el código que he realizado para que funcione.
Se trata de sacar pares (Atributo,Valor) e ir creando objetos JTextField para representarlos en el formulario:

Código:
public void generarParesText(Hashtable listaConf) {
        // 
        int initHeigh = 95;
        int initLeft = 55;
        int interVSpace = 8;
        int interHSpace = 30;
        int rowEnCurso = 0;
        Set claves = listaConf.keySet();
        Iterator it = claves.iterator();
        // 1. Itera para la lista
        while(it.hasNext()) {
            // 1.1 Obtenemos los textos
            String clave = (String)it.next();
            // 2. Crea los objetos
            JTextField fieldClave = new JTextField(clave);
            JTextField fieldValor = new JTextField(valor);
            // 2.1 Set de propiedades visuales para la clave
            fieldClave.setName("fieldClave");
            fieldClave.setSize(160,15);
            fieldClave.setLocation(initLeft,initHeigh+(rowEnCurso*(interVSpace+15)));
            // 2.2 Set de propiedades visuales para el valor
            fieldValor.setName("fieldValor");
            fieldValor.setSize(160,15);
            fieldValor.setLocation(initLeft+interHSpace+160,initHeigh+(rowEnCurso*(interVSpace+15)));
            // 2.2 Anclamos objetos al formulario
            this.getContentPane().add(fieldClave);
            this.getContentPane().add(fieldValor);
            rowEnCurso++;
            // this.add(fieldClave);
        }
    }
Gracias y hasta otra
  #9 (permalink)  
Antiguo 13/11/2006, 04:08
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 419
Antigüedad: 20 años, 8 meses
Puntos: 1
Ahora, se me plantea un nuevo problema:

En otras secciones de código, no sé como referirme a esos objetos que se han creado en tiempo de ejecución (da error al referirme a algo que no existe). Por ejemplo, si quiero hacer un método para leer lo que el usuario haya introducido en esos JTextField ¿cómo puedo recorrerlos uno a uno?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:04.