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

 Java Discussion :

Afficher une image dans un JLabel depuis une URL


Sujet :

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 dans un JLabel depuis une URL
    bonjour à tous, toujours sur mon projet java j'ai fait un beau formulaire qui me permet de saisir les caractéristiques d'un produit, et je dois lui joindre une image

    pour ne pas avoir à stocker les images (pour l'instant on ne sait pas faire de liens avec une BD, on stock les datas dans un fichier texte), j'ai entrepris de travailler avec des URL d'images. j'ai trouvé du code sur internet, mais je galère à le faire tourner...

    voici une version raccourcis de mon code pour tester la fonction d'affichage avec une url d'image bateau :

    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
    JFrame fenImage = new JFrame();
    		JLabel labelImage = new JLabel();		
    		java.net.URL u;
    		try { u = new URL("http://bilad.fr/model_fichiers/img_surgele.jpg");
    		ImageIcon imageTemp = new ImageIcon(u);
    		JLabel cadreIMG = new JLabel (imageTemp);
    		}
    		catch (MalformedURLException e1) {
    			e1.printStackTrace();
    		}
    		fenImage.add(labelImage);	
     
    		// Definition de la fenetre
    		fenImage.setSize(400,400); 
    		fenImage.setResizable(false);
    		fenImage.setLocationRelativeTo(null); 
    		fenImage.setVisible(true);
    		fenImage.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    dans mon formulaire de saisie complet, ya :
    - un champs "URL" ou on vient coller l'url de l'image
    - un bouton "test URL"
    et bien évidemment l'image doit s'afficher dans le JLabel qui se trouve juste en dessous du champs URL + bouton (et non pas dans une fenêtre extérieure), le tout sans perdre les données saisies dans les autres champs de la fenêtre

    merci de votre aide

  2. #2
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut
    Le code que tu as donné il ne fonctionne pas la ?
    Qu'est ce qu'il fait, il donne une erreur, il n'affiche rien ??

  3. #3
    Membre à l'essai
    Homme Profil pro
    Java
    Inscrit en
    Septembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2009
    Messages : 7
    Points : 10
    Points
    10
    Par défaut Place une image dans un jlabel
    je ne sais pas si j'ai bien compris ton problème mais je vais éssayer d'y repondre aulieu de rester sans rien faire:

    as-tu éssayer ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    .......
    JLabel cadreIMG=new Jlabel();
    cadreIMG.setIcon(new ImageIcon(URL));
    ......
    Remplace URL par ton URL.je suis sur que ca va marcher.
    fait moi signe si ca va

  4. #4
    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
    mon code corrigé avec vos indications :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    package fenetres;
     
    import java.net.MalformedURLException;
    import java.net.URL;
     
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
     
    public class BlocImage {
     
    	public BlocImage(){
     
    		JFrame fenImage = new JFrame();
    		JLabel labelImage = new JLabel();
     
    		java.net.URL u;
    		try { u = new URL("http://bilad.fr/model_fichiers/img_surgele.jpg");
    		System.out.println("test try OK");
     
    		JLabel cadreIMG=new JLabel();
    		cadreIMG.setIcon(new ImageIcon("http://bilad.fr/model_fichiers/img_surgele.jpg"));
     
    		}
    		catch (MalformedURLException e1) {
    			System.out.println("test try pas du tout OK");
    			e1.printStackTrace();
    		}	
    		fenImage.add(labelImage);	
    		// Definition de la fenetre
    		fenImage.setSize(400,400); // taille de ma fenetre
    		fenImage.setResizable(false); // empeche le redimensionnement de la fenetre
    		fenImage.setLocationRelativeTo(null); // fonction de centrage de la fenetre
    		fenImage.setVisible(true);
    		fenImage.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	}
    }
    résultat :
    pas d'erreur de compilation
    affichage d'une belle fenetre carrée toute grise sans image dedans

  5. #5
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut
    Et si tu défini les dimensions de ton label ca donne quoi ?? Peut-être qu'il défini les dimensions alors que l'image n'est pas encore chargée, donc tu te retrouve avec une dimension de (0,0).

  6. #6
    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
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    package fenetres;
     
     
     
    import java.net.MalformedURLException;
     
    import java.net.URL;
     
     
     
    import javax.swing.ImageIcon;
     
    import javax.swing.JFrame;
     
    import javax.swing.JLabel;
     
     
     
    public class BlocImage {
     
     
     
    	public BlocImage(){
     
     
     
    		JFrame fenImage = new JFrame();
     
    		JLabel labelImage = new JLabel();
     
    		fenImage.setSize(600,600); // taille de ma fenetre
     
     
     
    		java.net.URL u;
     
    		try { u = new URL("http://bilad.fr/model_fichiers/img_surgele.jpg");
     
    		System.out.println("test try OK");
     
     
     
    		JLabel cadreIMG=new JLabel();
     
    		cadreIMG.setIcon(new ImageIcon("http://bilad.fr/model_fichiers/img_surgele.jpg"));
     
     
     
    		}
     
    		catch (MalformedURLException e1) {
     
    			System.out.println("test try pas du tout OK");
     
    			e1.printStackTrace();
     
    		}	
     
    		fenImage.add(labelImage);	
     
    		// Definition de la fenetre
     
     
     
    		fenImage.setResizable(false); // empeche le redimensionnement de la fenetre
     
    		fenImage.setLocationRelativeTo(null); // fonction de centrage de la fenetre
     
    		fenImage.setVisible(true);
     
    		fenImage.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    	}
     
    }
    par acquis de conscience, j'ai agrandi le cadre de l'image, résultat identique

  7. #7
    Membre actif
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Points : 286
    Points
    286
    Par défaut
    Je pensais plus soit à la taille de l'icone soit à la taille du label.

    Si je me rappelle bien chaque élément calcule sa taille au moment où il est déployée. Si l'image n'a pas encore été téléchargée, la taille du label (et sûrement de l'icone) sera donc nulle au déploiement.....

  8. #8
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu n'utilises pas le bon constructeur pour ImageIcon. Donne lui un objet URL au lieu de lui donner une chaine de caractères.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  9. #9
    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
    je vais essayer, je vous tiens au courant

  10. #10
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par Morby Voir le message
    dans tous les cas ça ne change apparemment rien si on se réfère aux tests ci-dessus. on avance pas bcp
    Je recommence : ton code de test n'est pas correct. C'est pour cette raison que tu n'as pas le bon résultat.
    Il te faut utiliser le bon constructeur.

    EDIT : et en plus, cadreIMG n'est jamais ajouté à ta fenêtre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  11. #11
    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
    lon on a posté en meme temps

    Citation Envoyé par dinobogan Voir le message
    Tu n'utilises pas le bon constructeur pour ImageIcon. Donne lui un objet URL au lieu de lui donner une chaine de caractères.
    j'avoue qu'en tant que grand débutant, je n'ai pas bien compris le sens de ta phrase... qu'est ce qui n'est pas le bon constructeur ? le JLabel ? ou est-ce que je devrais mettre l'URL, à la place de quelle chaine de caractère (je vois pas ou j'ai déclaré un String) ?

    un petit exemple me parlerait surement plus...

  12. #12
    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
    Après demande de conseil à ma prof de java, il semble qu'on ne puisse pas afficher directement une image web dans un JLabel, on est obligé de passer par un serveur Tomcat. Et comme j'ai pas encore appris à faire ça, je vais m'orienter sur une autre solution avec des images stockées en local

    SUJET CLOS

  13. #13
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par Morby Voir le message
    Après demande de conseil à ma prof de java, il semble qu'on ne puisse pas afficher directement une image web dans un JLabel, on est obligé de passer par un serveur Tomcat. Et comme j'ai pas encore appris à faire ça, je vais m'orienter sur une autre solution avec des images stockées en local

    SUJET CLOS
    Bon, j'ai eu pitié....
    Au passage, tu diras à ton prof que... non laisse tomber ;-)

    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
    import java.net.URL;
     
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
     
    public class TestGeneral
    {
    	public static void main( String[] arg ) throws Exception
    	{
    		JFrame frame = new JFrame( "image URL" );
    		JLabel label = new JLabel( new ImageIcon( new URL( "http://bilad.fr/model_fichiers/img_surgele.jpg" ) ) );
    		frame.getContentPane().add( label );
    		frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    		frame.pack();
    		frame.setVisible( true );
    	}
    }
    Ce code simple affiche ton image dans une JFrame.

    Ce que je te disais entre l'URL et la chaine, c'est que tu faisais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ImageIcon( "une chaine" )
    au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ImageIcon( new URL( "une chaine" ) )
    Et en plus, le JLabel construit n'était jamais insérer dans ta JFrame donc pas visible.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  14. #14
    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
    je te remercie pour ta réponse et ta solution.

    pour l'instant je me suis orienté vers une solution plus simple avec un lot d'image stockées dans un package du projet, mais je garde précieusement ton code qui à un moment donné finira bien par me servir, et puis au passage je le montrerai à ma prof, ça pourra peut etre lui rendre service aussi, sait-on jamais

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

Discussions similaires

  1. Afficher une Image dans un JLabel
    Par Pif_Paf_Pouf dans le forum Débuter
    Réponses: 21
    Dernier message: 21/04/2015, 20h57
  2. [AC-2010] Insérer une image dans un email depuis une table ?
    Par zeubest dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/11/2010, 15h48
  3. Réponses: 2
    Dernier message: 23/05/2010, 12h45
  4. Afficher une image dans un JLabel
    Par asoka13 dans le forum Applets
    Réponses: 4
    Dernier message: 07/11/2009, 02h05
  5. Réponses: 3
    Dernier message: 18/04/2008, 09h54

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