elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema cargar foto JPANEL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema cargar foto JPANEL  (Leído 2,455 veces)
ivanrodas

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Problema cargar foto JPANEL
« en: 28 Mayo 2014, 12:13 pm »

Hola, soy yo otra vez , vais a pensar que soy un patán con esto .... jaja pero me surgió un problema muy extraño.

Tengo un jpanel para mostrar una foto a demas de unos atributos, el jpanel lo cambie por una etiqueta y me pasaba el mismo problema


Tengo 4 metodos diferentes:

Uno se llama preparar(objt v);
le pasamos un objeto y el metodo coge todas las propiedades del objeto y las pinta en las diferentes JtextLabeL del Jpanel, entre otras captura una imagen del objeto y la pasa de la siguiente manera:

Código
  1. *
  2. *
  3. setjPanelFoto(v.getFotografia());
  4. *
  5. *
me llama a ese metodo que es el siguiente

 
Código
  1.    public void setjPanelFoto(ImageIcon x) {
  2.        this.jPanelFoto.getGraphics().drawImage(x.getImage(), WIDTH, HEIGHT, 150, 150, this);
  3.  
  4.    }

bien el problema esta aqui:

cuando me meto por primera vez en esa ventana , me llama al método ConsultarTodo(); que este lo que hace es recuperar el primer objeto de una Array y se lo pasa al método preparar(obj);

me pinta la ventana con todos los datos exceptuando la foto , me he fijado que en un momento determinado me pinta la foto pero luego al cargar y pintar todo los datos me la borra.... , luego tengo un botón llamado siguiente . lo que hace es recuperar el objeto siguiente de la array y llamar a preparar(obj) con el nuevo objeto , pues aquí me presenta bien todos los campos , incluida la foto..., tengo otro botón que es Anterior, que hace lo contrario , recupera el objeto anterior... y me funciona también correctamente.



En línea

Migugami

Desconectado Desconectado

Mensajes: 22


Systems Analyst


Ver Perfil
Re: Problema cargar foto JPANEL
« Respuesta #1 en: 28 Mayo 2014, 15:43 pm »

Código
  1. @Override
  2. protected void paintComponent(Graphics g) {
  3.     super.paintComponent(g);
  4.     g.drawImage(image, 0, 0, null);      
  5. }

Recuerda, para dibujar cualquier cosa en un contenedor de JPanel, debes de usar el método paintComponent, que será llamado automáticamente cada vez que hayan cambios en el JPanel (se mueva, etc), así que debes dibujar tu imagen en éste método para que la imagen sea visible todo el tiempo en el JPanel.


En línea

ivanrodas

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Problema cargar foto JPANEL
« Respuesta #2 en: 28 Mayo 2014, 16:47 pm »

pero mi imagen esta guardada como ImagenIcon , le tengo que realizar un cast para poder usarla en ese metodo no?

lo siento pero no me entero, he puesto ese código , interpreto que en image tendré que poner la imagen , pero en Graphics no se que objeto pasarle.

gracias por la ayuda
« Última modificación: 28 Mayo 2014, 16:58 pm por ivanrodas » En línea

Migugami

Desconectado Desconectado

Mensajes: 22


Systems Analyst


Ver Perfil
Re: Problema cargar foto JPANEL
« Respuesta #3 en: 29 Mayo 2014, 01:40 am »

1) Crea una clase que herede de JPanel (ésta clase será el panel con el fondo) y Guardas la imagen en un objeto Image:

Código
  1. Image fondo = new ImageIcon(
  2.   getClass().getResource("fondo.jpg")
  3. ).getImage();

2) Lde implementar los controles y todo lo que desees, sobreescribes el método paintComponent.

Código
  1. @Override
  2. protected void paintComponent(Graphics g) {
  3.        super.paintComponent(g);
  4.        g.drawImage(fondo, 0, 0, null);      
  5. }

NOTA: No necesitas llamar al método paintComponent explícitamente, ya que éste es llamado automáticamente por JPanel cada vez que el estado del JPanel cambia (cuando se mueve, se refresca la pantalla, etc). En casos es necesario llamarlo explícitamente, esto se hace con el método repaint.

Código
  1. public class PanelFondo extends JPanel {
  2. Image fondo;
  3.  
  4. public PanelFondo() {
  5. this.setPreferredSize(500,600);
  6. this.add(crearFondo());
  7. }
  8.  
  9. private void crearFondo() {
  10. fondo = new ImageIcon(
  11.   getClass().getResource("fondo.jpg")
  12. ).getImage();
  13. }
  14.  
  15. // ESTE METODO ES LLAMADO AUTOMATICAMENTE POR JPANEL PARA
  16. // PINTAR LA UI, INCLUIDA LA IMAGEN DE FONDO
  17. @Override
  18. protected void paintComponent(Graphics g) {
  19.         super.paintComponent(g);
  20.         g.drawImage(fondo, 0, 0, null);      
  21. }
  22.  
  23. }

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema al cargar dll
Programación Visual Basic
V18s 2 1,249 Último mensaje 13 Septiembre 2005, 01:22 am
por V18s
Problema con JScrollPane y JPanel, usando setlayout(null) y .setbounds
Java
yeah69 6 8,813 Último mensaje 30 Abril 2016, 01:43 am
por + 1 Oculto(s)
Redimensionar tamaño JPanel dentro de otro JPanel [SOLUCIONADO]
Java
pisagatos 3 19,391 Último mensaje 11 Octubre 2012, 04:16 am
por Gianko
Problema: Foto escaneada con colores raros
Diseño Gráfico
skan 5 3,096 Último mensaje 2 Febrero 2012, 04:17 am
por Darioxhcx
Hacer zoom en foto y que se vea mas agrandada esa parte de la foto solo
Diseño Gráfico
Anonymous250 3 3,642 Último mensaje 9 Agosto 2012, 17:54 pm
por Azielito
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines