Java - Cambiar la imagen de un JPanel

   
Vista:

Cambiar la imagen de un JPanel

Publicado por octicoco (74 intervenciones) el 30/08/2009 02:54:53
Hola amigos, mi consulta es la siguiente:

Tengo un JPanel al cual le añado una imagen y realizo distintas acciones sobre esta:

La imagen es una mano y al pasar por ensima de esta los dedos deben cambiar de color, y si hago click en un dedo debo realizar algo, pero no logro cambiar la imagen cuando paso sobre un dedo mi codigo es asi:

import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import javax.swing.*;
import PaqueteParaPruebas.*;
import java.awt.event.*;

public class Regitrohuella1 extends javax.swing.JFrame implements MouseListener, MouseMotionListener{

//esta SERIA la 1º imagen
ImageIcon IMD = new ImageIcon("E:/Programacion/Java/TESIS/LectorDeHuellas/Imagenes/manoDer.png");
JLabel jlbMD = new JLabel(IMD);
//esta seria la segunda imagen (en realidad seran 4 imagenes mas aparte de esta)
ImageIcon IMDPulgarD = new ImageIcon("E:/Programacion/Java/TESIS/LectorDeHuellas/Imagenes/sobreDedo/pulgarD.png");
JLabel jlbMDPulgarD = new JLabel(IMDPulgarD);

/** Creates new form Regitrohuella1 */
public Regitrohuella1() {
initComponents();
jlbMD.setSize(133, 131);
jplManoDer.add(jlbMD);
this.remove(jplManoDer);
this.add(jplManoDer);
jplManoDer.setSize(133, 131);
this.show();
this.addMouseListener(this);
this.addMouseMotionListener(this);
}

public void mouseEntered( MouseEvent e ) {
this.requestFocus();
}
public void mouseExited( MouseEvent e ) {}
public void mousePressed( MouseEvent e ) {}
public void mouseReleased( MouseEvent e ) {
int x = e.getLocationOnScreen().x;
int y = e.getLocationOnScreen().y;
if (x > 947 && x < 974 && y > 467 && y < 513){
System.out.println("hiciste click en dedo INDICE MANO DERECHA");
} else if (x > 973 && x < 999 && y > 455 && y < 511){
System.out.println("hiciste click en dedo MEDIO MANO DERECHA");
}else if (x > 996 && x < 1024 && y > 462 && y < 509){
System.out.println("hiciste click en dedo ANULAR MANO DERECHA");
}else if (x > 1021 && x < 1049 && y > 480 && y < 519){
System.out.println("hiciste click en dedo MEÑIQUE MANO DERECHA");
}else if (x > 915 && x < 960 && y > 523 && y < 563){
System.out.println("hiciste click en dedo PULGAR");
}else {
System.out.println(x+" - "+y);
}
}
public void mouseClicked( MouseEvent e ) {}
public void mouseDragged(MouseEvent e){}

//AQUI POR CADA DEDO SE DEBE CAMBIAR LA IMAGEN en lugar de decir en que dedo estoy parado, estoy probando de hacerlo con el dedo PULGAR
public void mouseMoved(MouseEvent e){
int x = e.getLocationOnScreen().x;
int y = e.getLocationOnScreen().y;
if (x > 947 && x < 974 && y > 467 && y < 513){
System.out.println("PRADO en dedo INDICE MANO DERECHA");
} else if (x > 973 && x < 999 && y > 455 && y < 511){
System.out.println("PRADO en dedo MEDIO MANO DERECHA");
}else if (x > 996 && x < 1024 && y > 462 && y < 509){
System.out.println("PRADO en dedo ANULAR MANO DERECHA");
}else if (x > 1021 && x < 1049 && y > 480 && y < 519){
System.out.println("PRADO en dedo MEÑIQUE MANO DERECHA");
}else if (x > 915 && x < 960 && y > 523 && y < 563){

//AQUI ES DONDE QUIERO CAMBIAR LA IMAGEN del JPanel llamado jplManoDer

System.out.println("PRADO en dedo PULGAR");
jlbMDPulgarD.setSize(133, 131);
//REMUEVO LA VIEJA IMAGEN
jplManoDer.remove(jlbMD);
//LE PONGO LA NUEVA
jplManoDer.add(jlbMDPulgarD);
//Y NO PASA NADA QUEDA COMO ESTA

}else {
//System.out.println(x+" - "+y);
}
}

// Y sigue, despues declaracion de los objetos:

// Variables declaration - do not modify
private javax.swing.JPanel jpAnular;
private javax.swing.JPanel jpIndice;
private javax.swing.JPanel jpMedio;
private javax.swing.JPanel jpMenique;
private javax.swing.JPanel jpPalma;
private javax.swing.JPanel jpPulgar;
private javax.swing.JPanel jplManoDer;
// End of variables declaration
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cambiar la imagen de un JPanel

Publicado por octicoco (74 intervenciones) el 30/08/2009 02:56:32
Bueno ya lo solucione, la solicion era poner en cada IF del MouseOver repaint() de esta forma:

public void mouseMoved(MouseEvent e){
int x = e.getLocationOnScreen().x;
int y = e.getLocationOnScreen().y;
if (x > 947 && x < 974 && y > 467 && y < 513){
jlbMDIndiceD.setSize(133, 131);
jplManoDer.removeAll();
jplManoDer.add(jlbMDIndiceD);
jplManoDer.repaint();
} else if (x > 973 && x < 999 && y > 455 && y < 511){
jlbMDMedioD.setSize(133, 131);
jplManoDer.removeAll();
jplManoDer.add(jlbMDMedioD);
jplManoDer.repaint();
}else if (x > 996 && x < 1024 && y > 462 && y < 509){
jlbMDAnularD.setSize(133, 131);
jplManoDer.removeAll();
jplManoDer.add(jlbMDAnularD);
jplManoDer.repaint();
}else if (x > 1021 && x < 1049 && y > 480 && y < 519){
jlbMDMeniqueD.setSize(133, 131);
jplManoDer.removeAll();
jplManoDer.add(jlbMDMeniqueD);
jplManoDer.repaint();
}else if (x > 915 && x < 960 && y > 523 && y < 563){
jlbMDPulgarD.setSize(133, 131);
jplManoDer.removeAll();
jplManoDer.add(jlbMDPulgarD);
jplManoDer.repaint();


//MANO IZQUIERDA
}else if (x > 837 && x < 865 && y > 467 && y < 513){
jlbMDIndiceI.setSize(133, 131);
jplManoIzq.removeAll();
jplManoIzq.add(jlbMDIndiceI);
jplManoIzq.repaint();
} else if (x > 812 && x < 837 && y > 455 && y < 511){
jlbMDMedioI.setSize(133, 131);
jplManoIzq.removeAll();
jplManoIzq.add(jlbMDMedioI);
jplManoIzq.repaint();
}else if (x > 792 && x < 815 && y > 462 && y < 509){
jlbMDAnularI.setSize(133, 131);
jplManoIzq.removeAll();
jplManoIzq.add(jlbMDAnularI);
jplManoIzq.repaint();
}else if (x > 764 && x < 793 && y > 480 && y < 519){
jlbMDMeniqueI.setSize(133, 131);
jplManoIzq.removeAll();
jplManoIzq.add(jlbMDMeniqueI);
jplManoIzq.repaint();
}else if (x > 854 && x < 898 && y > 522 && y < 559){
jlbMDPulgarI.setSize(133, 131);
jplManoIzq.removeAll();
jplManoIzq.add(jlbMDPulgarI);
jplManoIzq.repaint();
} else {
jplManoIzq.removeAll();
jplManoIzq.add(jlbMI);
jplManoIzq.repaint();
jplManoDer.removeAll();
jplManoDer.add(jlbMD);
jplManoDer.repaint();
}
}

Espero que la pregunta y respuesta realizada por mi le sirva a alguien que le pase lo mismo o algo parecido...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cambiar la imagen de un JPanel

Publicado por Diego (1 intervención) el 23/07/2013 11:04:55
Si amigo a mi en realidad me sirvio muchisimo gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar