IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Mise à jour d'une image


Sujet :

2D Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 48
    Par défaut Mise à jour d'une image
    Salut tout le monde

    Je fais un programme dans lequel on peut choisir une image qui sera affichée. Jusque la, pas de problème. Mais j'aimerais que lorsqu'on choisit une nouvelle image, elle soit affichée à la place de l'ancienne. Je débute complètement avec les images en java, mais je suis sur que c'est pas bien compliqué...

    voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if(resultat == JFileChooser.APPROVE_OPTION){
    				File photoFile = chooser.getSelectedFile();
    				String path = photoFile.getPath();
     
    				Image photoImage = toolkit.getImage(path);
     
    				if(VoletImage == null){
    					VoletImage = new VoletImage(photoImage);
    					panelCreerLigne4.add(VoletImage); //j'add le volet contenant l'image au panel
    				}
    				else { //une photo est déjà affichée
    					VoletImage = new VoletImage(photoImage);
                                            //C'est ici que je ne sais pas très bien quoi mettre...
                                            VoletImage.repaint();
    					this.repaint();
    				}
    			}
    ma classe VoletImage ressemble à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class VoletImage extends JPanel{
    	Image image;
    	public VoletImage (Image image){
    		this.image = image;
    	}
     
    	public void paint(Graphics g){
    		g.drawImage(image, 0, 0, this);
    	}
     
    }
    Est-ce que qqn sait comment résoudre ce problème ?
    Merci.

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Alors deux trois petites choses

    Mieux vaut utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ImageIO.read(File f)
    que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Toolkit.getDefaultToolkit.getImage("image);
    pour récupérer une image, c'est plus sûr, le toolkit ne chargeant pas forcément l'image d'un coup


    Deuxièmement, évite d'utiliser pour tes noms de variable le nom exact de la classe avec la même casse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VoletImage = new VoletImage(photoImage);
    C'est plus que tendancieux, voire même dangereux (imaginons que tu veuilles appeler un émthode static d'une classe et que tu ais déja un instance de cette classe dans ton code, tu vas avoir une jolie engueulade du compilo ou de la JVM au choix)

    Enfin, le plus simple pour toi serait que ta classe VoletImage possède un accesseur en écriture sur l'attribut image (une méthode qui permet de modifier la valeur de l'attibut image)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class VoletImage extends JPanel{
        private Image image; //toujours mettre les attributs en private pour respecter le principe d'encapsulation
        public VoletImage (Image image){
            this.image = image;
        }
        
            //dans ton cas mieux vaut utiliser paintComponent que paint
        public void paintComponent(Graphics g){
                    super.paintComponent(g);  //pour que le dessin se fasse correctement
            g.drawImage(image, 0, 0, this);
        }
     
         //accesseur en écriture su image
            public void setImage (Image image) {
                    this.image = image;
                    this.revalidate();
                    this.repaint();
        }
    }
    Et pour changer l'image tu auras juste à faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    if(resultat == JFileChooser.APPROVE_OPTION){
                    File photoFile = chooser.getSelectedFile();
     
                    Image photoImage = ImageIO.read(photoFile);
     
                    if(voletImage == null){
                        voletImage = new VoletImage(photoImage);
                        panelCreerLigne4.add(VoletImage); //j'add le volet contenant l'image au panel
                    }
                    else { //une photo est déjà affichée
                        voletImage.setImage(photoImage);
                        this.repaint();
                    }
                }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 48
    Par défaut
    Merci beaucoup pour tes conseils !

    Ca crois que ca répond à mes premières questions, je vais essayer tout ca

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour d'une image dans JFrame
    Par nouraty dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 09/03/2012, 16h07
  2. Mise à jour d'une image
    Par DiverSIG dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 23/08/2011, 10h33
  3. [MySQL] Mise à jour d'une image
    Par Romuald632 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/04/2011, 21h00
  4. [MySQL] Syntaxe de mise à jour d'une image
    Par yamino dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/07/2007, 15h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo