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 :

Afficher une image d'après sélection dans JComboBox


Sujet :

2D Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Points : 24
    Points
    24
    Par défaut Afficher une image d'après sélection dans JComboBox
    Bonjour à tous

    je réalise un projet Java pour mon examen et j'ai un problème d'affichage d'image :
    - J'ai une fenetre principale dans laquelle se trouve une JCombobox qui contient une liste d'images (avec un espace en 1ère valeur pour symboliser le champs vide).

    - En dessous j'ai un JLabel qui affiche l'image qui sera sélectionnée dans la JCombox, avec une image par défaut.

    Bien entendu, je voudrais que quand on sélectionne une image dans la JCombobox, elle s'affiche immédiatement dans le JLabel.
    Les images sont très petites, et toutes stockées dans un package "Images"

    J'ai au départ bêtement fait un
    cadreIMG = new JLabel(new ImageIcon("src/Images/blank.jpg") );
    pour afficher l'image par défaut. Le problème s'est corsé à partir du moment où je voulais que cette image se modifie en fonction du choix dans la combobox...

    Après moult lectures et différents essais, je me suis arrêté sur la méthode ImageIO, et suis parvenu à afficher mon image par défaut avec :
    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
     
    //en tête de la classe
    	JComboBox menuImage;
    	JLabel cadreIMG;
    	BufferedImage buffImg;
    	File f;
    ....
     
    // dans le constructeur
    menuImage = new JComboBox(new String[]{" ","surgele BOEUF"});
     
    f = new File("src/Images/blank.jpg");
    		try {
    			buffImg = ImageIO.read(f);
    			cadreIMG = new JLabel(new ImageIcon(buffImg) );			
    		}catch (IOException e) {
    			e.printStackTrace();
    		}
    donc jusque là tout va bien


    et c'est là que je suis en galère :
    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
    21
     
    // écouteur de la Jcombobox
    	public class SelecImage implements ActionListener{	
    		public void actionPerformed(ActionEvent e) {		
    			System.out.println("selection image OK");
    			String typeIMG = (String) menuImage.getSelectedItem();
    			if (typeIMG.equals("surgele BOEUF")){
     
    				f = new File("src/Images/surgel_boeuf.jpg");							
    				try {
    					buffImg = ImageIO.read(f);
    					cadreIMG = new JLabel(new ImageIcon(buffImg) );
    					System.out.println("test affichage image surgele boeuf");
    					cadreIMG.revalidate();
     
    				}catch (IOException e2) {
    					e2.printStackTrace();
    				}	
    			}
    		}
    	}
    je me rend bien compte que je ne devrais pas faire de
    cadreIMG = new JLabel(new ImageIcon(buffImg) );
    dans l'écouteur, mais je ne trouve pas la bonne syntaxe

    un petit coup de main serait bienvenu, merci

  2. #2
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    Si je comprends bien ton problème, lorsque tu fais :
    Citation Envoyé par Morby
    cadreIMG = new JLabel(new ImageIcon(buffImg) );
    Tu crée une nouvelle instance de JLabel qui remplace la précédente dans l'attribut cadreIMG. Cependant, le JLabel ajouté dans le conteneur graphique lui reste toujours le même, ce qui est normal car tu n'as pas remplacé l'objet à l'intérieur de la superclasse...

    Pourquoi tu ne fais pas simplement dans l'écouteur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cadreIMG.setIcon(new ImageIcon(buffImg));

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Points : 24
    Points
    24
    Par défaut
    super, ça fonctionne
    merci pour le déblocage

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

Discussions similaires

  1. [2.x] Afficher une image qui existe déja dans la bdd après le CRUD
    Par aitiahcene dans le forum Symfony
    Réponses: 18
    Dernier message: 07/06/2012, 14h19
  2. Réponses: 5
    Dernier message: 15/12/2008, 17h15
  3. Afficher une image d'apres un formulaire utilisant input type="file"
    Par kilian67 dans le forum Général JavaScript
    Réponses: 33
    Dernier message: 17/08/2008, 22h12
  4. [VB6] Afficher une image de bonne qualité dans un form
    Par hpfx dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/05/2006, 12h23

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