
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
}
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


0