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

Añadir objeto en tiempo de ejecución

Estas en el tema de Añadir objeto en tiempo de ejecución en el foro de Java en Foros del Web. Buenas de nuevo: Tengo un código de pruebas que añade un JPanel dentro de otro JPanel en tiempo de ejecución tras pulsar un botón. @import ...
  #1 (permalink)  
Antiguo 14/05/2012, 15:25
Avatar de ArcNexus  
Fecha de Ingreso: abril-2012
Ubicación: Donde uno se da cuenta de que no sabe nada
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 4
Añadir objeto en tiempo de ejecución

Buenas de nuevo:

Tengo un código de pruebas que añade un JPanel dentro de otro JPanel en tiempo de ejecución tras pulsar un botón.

Código Javascript:
Ver original
  1. public void actionPerformed(ActionEvent e) {
  2.                 JPanel prueba = new JPanel();
  3.  
  4.                 prueba.setVisible(true);
  5.                 prueba.setBackground(new Color(255,56,53));
  6.                 sl_panel_BusquedaRapida.putConstraint(SpringLayout.NORTH, prueba, 1, SpringLayout.SOUTH, panel_ContBusqueda);
  7.                 sl_panel_BusquedaRapida.putConstraint(SpringLayout.WEST, prueba, 1, SpringLayout.WEST, panel_BusquedaRapida);
  8.                
  9.                 prueba.setPreferredSize(new Dimension(170,300));
  10.                 panel_BusquedaRapida.add(prueba);
  11.                 panel_BusquedaRapida.repaint();
  12.             }
  13.         });

El tema está en que el objeto prueba no aparece hasta que no muevo el ratón después de haber hecho click en el botón.

¿Alguien me puede decir que estoy haciendo mal?

Muchas gracias.
__________________
Cuando compartimos, todos ganamos y crecemos.
mi blog:http://milinuxblog.informatica-intelligent.com
(Linux, Java y software libre)
  #2 (permalink)  
Antiguo 15/05/2012, 01:48
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Añadir objeto en tiempo de ejecución

¿ Estás controlando algún evento del ratón ?
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 15/05/2012, 02:16
Avatar de ArcNexus  
Fecha de Ingreso: abril-2012
Ubicación: Donde uno se da cuenta de que no sabe nada
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 4
Respuesta: Añadir objeto en tiempo de ejecución

Cita:
Iniciado por Fuzzylog Ver Mensaje
¿ Estás controlando algún evento del ratón ?
No, sólo el actionPerformed
__________________
Cuando compartimos, todos ganamos y crecemos.
mi blog:http://milinuxblog.informatica-intelligent.com
(Linux, Java y software libre)
  #4 (permalink)  
Antiguo 15/05/2012, 15:00
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Añadir objeto en tiempo de ejecución

pues es que no interesa por que estas agregando un panel nada mas, que viene a ser otro contenedor para colocar algo, pero en si no estas pintando, el repaint te dibuja lo que hay sobre ese panel no lo que hay sobre otros paneles, si quieres dibujar haces un Graphics y haces un fillRect por ejemplo...

y la linea 4: prueba.setVisible(true); checa colocandolo o ya sea una linea antes de la 11 o una después en la 12.....aun que como digo me parece que el repaint no es necesario por que no estas pintando nada, solo agregas un panel a otro......

tal vez tambien seria buno dividir la linea 2: JPanel prueba = new JPanel();......dejar de forma global: JPanel prueba;.......y poner en esa linea prueba = new JPanel();.....solo ideas
__________________
De nada, hay te encargo +1...

Última edición por zero0097; 15/05/2012 a las 15:11
  #5 (permalink)  
Antiguo 15/05/2012, 15:51
Avatar de ArcNexus  
Fecha de Ingreso: abril-2012
Ubicación: Donde uno se da cuenta de que no sabe nada
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 4
Respuesta: Añadir objeto en tiempo de ejecución

Cita:
Iniciado por zero0097 Ver Mensaje
pues es que no interesa por que estas agregando un panel nada mas, que viene a ser otro contenedor para colocar algo, pero en si no estas pintando, el repaint te dibuja lo que hay sobre ese panel no lo que hay sobre otros paneles, si quieres dibujar haces un Graphics y haces un fillRect por ejemplo...

y la linea 4: prueba.setVisible(true); checa colocandolo o ya sea una linea antes de la 11 o una después en la 12.....aun que como digo me parece que el repaint no es necesario por que no estas pintando nada, solo agregas un panel a otro......

tal vez tambien seria buno dividir la linea 2: JPanel prueba = new JPanel();......dejar de forma global: JPanel prueba;.......y poner en esa linea prueba = new JPanel();.....solo ideas
Ya, ya, solo era un prueba con la intención de luego insertar objetos dentro de este contenedor, Lo primero era conseguir meter el contenedor en tiempo de ejecución, que en su día será una clase llenita de objetos y funcionalidad.

Pensaba que el repaint servía para pintar el propio control, y lo que hubiese dentro en caso de ser un contenedor, claro.

Voy a probar tus sugerencias a ver que tal.
__________________
Cuando compartimos, todos ganamos y crecemos.
mi blog:http://milinuxblog.informatica-intelligent.com
(Linux, Java y software libre)
  #6 (permalink)  
Antiguo 15/05/2012, 17:09
Avatar de ArcNexus  
Fecha de Ingreso: abril-2012
Ubicación: Donde uno se da cuenta de que no sabe nada
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 4
Respuesta: Añadir objeto en tiempo de ejecución

Cita:
Iniciado por zero0097 Ver Mensaje
pues es que no interesa por que estas agregando un panel nada mas, que viene a ser otro contenedor para colocar algo, pero en si no estas pintando, el repaint te dibuja lo que hay sobre ese panel no lo que hay sobre otros paneles, si quieres dibujar haces un Graphics y haces un fillRect por ejemplo...

y la linea 4: prueba.setVisible(true); checa colocandolo o ya sea una linea antes de la 11 o una después en la 12.....aun que como digo me parece que el repaint no es necesario por que no estas pintando nada, solo agregas un panel a otro......

tal vez tambien seria buno dividir la linea 2: JPanel prueba = new JPanel();......dejar de forma global: JPanel prueba;.......y poner en esa linea prueba = new JPanel();.....solo ideas


Bueno, he probado y nada de nada. Lo que he observado es que no pinta el JPanel hasta que el ratón sale del JButton que contiene el código. ¿Alguna explicación debería tener y además debe haber alguna forma correcta de hacerlo. En otros lenguajes como C# (mono), VFP..... es bien fácil añadir un objeto en tiempo de ejecución e incluso cambiarle el tamaño haciendo un efecto tipo resize y funciona a la primera con un código parecido. Así que debe haber una forma simple que desconozco para hacerlo en Java. Seguro que algún concepto no tengo claro. En fin cosas de ser novato en un lenguaje.
__________________
Cuando compartimos, todos ganamos y crecemos.
mi blog:http://milinuxblog.informatica-intelligent.com
(Linux, Java y software libre)
  #7 (permalink)  
Antiguo 15/05/2012, 19:04
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Añadir objeto en tiempo de ejecución

mmm pero entonces tu quieres una ventana dentro de tu panel? que viva solo en el panel? por que si es así esta la clase de JInternalFrame...

Pero eso si, eso de que aparezca hasta que muevas el mouse fuera del button, esta raro, nunca me ha pasado, será por que nunca lo he intentado jeje...
__________________
De nada, hay te encargo +1...
  #8 (permalink)  
Antiguo 16/05/2012, 15:42
Avatar de ArcNexus  
Fecha de Ingreso: abril-2012
Ubicación: Donde uno se da cuenta de que no sabe nada
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 4
Respuesta: Añadir objeto en tiempo de ejecución

Cita:
Iniciado por zero0097 Ver Mensaje
mmm pero entonces tu quieres una ventana dentro de tu panel? que viva solo en el panel? por que si es así esta la clase de JInternalFrame...

Pero eso si, eso de que aparezca hasta que muevas el mouse fuera del button, esta raro, nunca me ha pasado, será por que nunca lo he intentado jeje...

BINGOOOOO!, diste en el clavo, con un JDesktopPane funciona de miedo, aunque no me interesa tener otro Jinternalframe dentro del JInternalFrame, pero un Jpanel, dentro de un JDesktopPane hace exactamente lo que andaba buscando.

Ser novato es un rollo, pero es divertido ir aprendiendo y compartiendo con la comunidad, así todos estamos más cerca.

Te subo el Karma
__________________
Cuando compartimos, todos ganamos y crecemos.
mi blog:http://milinuxblog.informatica-intelligent.com
(Linux, Java y software libre)
  #9 (permalink)  
Antiguo 16/05/2012, 15:51
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Añadir objeto en tiempo de ejecución

Gracias pero ni creas, uno también es novato :)
__________________
De nada, hay te encargo +1...
  #10 (permalink)  
Antiguo 16/05/2012, 17:13
Avatar de ArcNexus  
Fecha de Ingreso: abril-2012
Ubicación: Donde uno se da cuenta de que no sabe nada
Mensajes: 69
Antigüedad: 12 años, 1 mes
Puntos: 4
Respuesta: Añadir objeto en tiempo de ejecución

Cita:
Iniciado por zero0097 Ver Mensaje
Gracias pero ni creas, uno también es novato :)
Entonces espero que te diviertas tanto como yo aprendiendo Java; aunque no se porqué.... me da que no eres tan novato como es mi caso, aunque seguro que algún día pasaste por cerca de donde estoy yo ahora, como todos , jeje.
__________________
Cuando compartimos, todos ganamos y crecemos.
mi blog:http://milinuxblog.informatica-intelligent.com
(Linux, Java y software libre)

Etiquetas: objeto
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 03:05.