J'écris un programme où les images sont affichées sur un JPanel, mais j'ai du mal à remplacer l'image existante quand j'en ouvre une nouvelle. Y at-il un moyen facile de supprimer l'ancienne image de l'ImageIcon et de remplacer par le nouveau? Je pensais que quelque chose comme mp.remove (pic); fonctionnerait ici, mais il dit que ce n'est pas pris en charge pour ImageIcon?Remplacer l'image courante dans JPanel par une autre
class MapPanel extends JPanel {
public MapPanel(String filename) {
if(mp == null) {
pic = new ImageIcon(filename);
int w = pic.getIconWidth();
int h = pic.getIconHeight();
setPreferredSize(new Dimension(w, h));
setMinimumSize(new Dimension(w, h));
setMaximumSize(new Dimension(w, h));
setLayout(null);
}
else { int confirm =
JOptionPane.showConfirmDialog(MapProgram.this, "Unsaved changes, " +
"do you really want to open a new map?",
"New map", JOptionPane.OK_CANCEL_OPTION);
if (confirm != JOptionPane.OK_OPTION)
return;
// Remove the current image and display the new one choosen
// from the JFileChooser.
}
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(pic.getImage(), 0, 0, this);
}
}
Qu'en est-il juste de définir le nouveau imageIcon? – XtremeBaumer
Comment utilisez-vous 'pic'? La seule chose que vous nous avez montrée est la création et l'affectation 'pic = new ImageIcon (filename);' ainsi que vous obtenez les dimensions de l'image. – Thomas
Désolé, du code a été perdu d'une manière ou d'une autre. Voir le code mis à jour. – Andpej