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

Agents de placement/Fenêtres Java Discussion :

[JFileChooser] Path d'un fichier


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Par défaut [JFileChooser] Path d'un fichier
    Bonjour, voila ca fait un petit moment que je me prend la tete sur le format des path de fichier.

    J'ai un JFileChooser qui me permet de séléctionner un fichier (ici, une image), puis j'aimerais récuperer le chemin de cette image pour pouvoir charger l'image un peu plus tard. Seulement quelque soit la methode utilisé ( getPath(), getAbsolutePath, .toURI.getPath, toUrl etc...) je n'arrive pas à charger l'image.

    voici le code du JFileChooser:

    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
    //set the chooser
    				JFileChooser chooser = new JFileChooser();
    				OpenFilter gifFilter = new OpenFilter("Gif File",".gif");
    				chooser.addChoosableFileFilter(gifFilter);
    				chooser.setAcceptAllFileFilterUsed(false);
    				int returnVal = chooser.showOpenDialog(ElementView.this);
     
    				if(returnVal == JFileChooser.APPROVE_OPTION) {
    					System.out.println("You chose to open this file: " +
    							chooser.getSelectedFile().getPath());
    					try {
    						cont.setDataType("picture");
    						String path = chooser.getSelectedFile().getPath();
    						cont.setDataPath(path);
     
    						content.removeAll();
    						createPane(cont.getDataType());
    						content.revalidate();
    					} catch (ContainerException ce) {
    						ce.printStackTrace(); 
    }
    setDataPath ajoute juste le path dans un objet de ma structure. que j'utilise ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    				ImageIcon scaleImage = createImageIcon(cont.getDataPath());
    				Image image = scaleImage.getImage();
    				LabelImage labIm = new LabelImage(image);
     
    				content.add(labIm, BorderLayout.CENTER);
    et la methode pour charger l'image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	/** Returns an ImageIcon, or null if the path was invalid. */
        private ImageIcon createImageIcon(String path) {
            java.net.URL imgURL = getClass().getResource(path);
            if (imgURL != null) {
                return new ImageIcon(imgURL);
            } else {
                System.err.println("Couldn't find file: " + path);
                return null;
            }
        }
    Et donc j'ai le droit à un joli Couldn't find file à chaque fois. J'ai essayer de passer par un URI, une URL etc..., ca ne change rien. De plus les methode setDataPath etc.. fonctionne, j'ai imprimé le chemin pour en etre sur.
    Et creatImageIcon fonctionne aussi lorsque je lui passe un path moi meme comme par exemple "Icons/image_test.jpg".

    Voila, si vous avez une idée, parce que je vois vraiment pas, et je suis sur que c'est tout con en plus...

  2. #2
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Par défaut
    Bon, personne ne voit ou se situe mon problème alors ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut
    Mais est ce que ton FileChooser de retourne vraiment un path?
    As tu affiché ton path avec un System.out.println (path) ?

  4. #4
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Par défaut
    Oui oui je l'ai fait bien sur, et il retourne bien un path, tout comme ce path est bien stocké au bon endroit dans ma structure, le problème vient vraiment du fait qu'il arrive pas a utiliser ce path pour recuperer l'image

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut
    Utilises :

    new ImageIcon ( new URL ("file", "localhost", "tonpath"));

    tonpath : le path + nom fichier + extension (ex : .gif)

  6. #6
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut Re: [SWING] Path d'un fichier
    Citation Envoyé par mush_H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	/** Returns an ImageIcon, or null if the path was invalid. */
        private ImageIcon createImageIcon(String path) {
            java.net.URL imgURL = getClass().getResource(path);
            if (imgURL != null) {
                return new ImageIcon(imgURL);
            } else {
                System.err.println("Couldn't find file: " + path);
                return null;
            }
        }
    Pourquoi ne pas faire tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	/** Returns an ImageIcon, or null if the path was invalid. */
        private ImageIcon createImageIcon(String path) {
                return new ImageIcon(path);
        }
    ?
    Surtout si au départ tu récupére le AbsolutePath

  7. #7
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Par défaut
    parce que c'est une fonction qui me sert deja pour mettre des icon dans mon interface, icon qui sont dans un dossier du package, et donc que j'utilise en chemin relatif, surtout qu'une fois fini, l'application sera dans un jar.


    Par contre, je peux faire une deuxieme fonction specifique pour ce traitement. Je test vos deux proposition de suite et je vois ce que ca donne .

  8. #8
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 64
    Par défaut
    Bon ok, JHelp t'es mon heros ^^.

    Ca fait deux fois que tu me remet dans le droit chemin en me montrant la voie simple que je ne vois pas.

    A la troisieme, je te demande ton mail et je te met en acknowledgment sur mon projet ^^.

    D'ailleur j'ai posté un message il y a quelque jours à propos de prendre une image d'un composant et personne ne m'avait répondu , donc si c'est pas trop demandé et abusé, et que tu as le temps d'y jeté un oeil je te serais vraiment trés reconnaisant

    c'est ici : http://www.developpez.net/forums/vie...533&highlight=

  9. #9
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut
    Ah ok, il te faut donc pouvoir récupéré le chemin relatif d'un fichier par rapport à un dossier.
    Petites méthodes utiles pour ça :
    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
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
       /**
        * Donne le chemin depuis la racine pour aller au fichier
        * @param file
        *        File dont on cherche le chemin
        * @return Le chemin qui méne au fichier
        */
       public static File[] cheminAbsolu(File file)
       {
          File absolu = file.getAbsoluteFile();
          Stack pile = new Stack();
          pile.push(absolu);
          while(absolu != null)
          {
             absolu = absolu.getParentFile();
             if(absolu != null)
             {
                pile.push(absolu);
             }
          }
          File[] chemin = new File[pile.size()];
          int rang = 0;
          while(!pile.isEmpty())
          {
             chemin[rang] = (File)pile.pop();
             rang++;
          }
          return chemin;
       }
       /**
        * Donne le chemin relatif d'un fichier par rapport à un dossier <br>
        * Ce qui est renvoyé est utilisable par le constructeur URL(URL url, String
        * chemin) comme argument chemin <br>
        * C'est également utilisable comme argument de getResource
        * @param dossierDepart
        *        Le dossier de départ
        * @param fichierArrive
        *        Le fichier ou on souhaites arriver
        * @return Le chemin relatif
        */
       public static String getCheminRelatif(File dossierDepart, File fichierArrive)
       {
          File[] depart = cheminAbsolu(dossierDepart);
          File[] arrive = cheminAbsolu(fichierArrive);
          int nb = Math.min(depart.length, arrive.length);
          int rang = 0;
          while(rang < nb && depart[rang].equals(arrive[rang]))
          {
             rang++;
          }
          StringBuffer chemin = new StringBuffer();
          if(rang < depart.length)
          {
             for(int i = rang; i < depart.length; i++)
             {
                chemin.append("../");
             }
             if(rang < arrive.length)
             {
                for(int i = rang; i < arrive.length; i++)
                {
                   chemin.append(arrive[i].getName());
                   if(i < arrive.length - 1)
                   {
                      chemin.append("/");
                   }
                }
             }
          }
          else if(rang < arrive.length)
          {
             for(int i = rang; i < arrive.length; i++)
             {
                chemin.append(arrive[i].getName());
                if(i < arrive.length - 1)
                {
                   chemin.append("/");
                }
             }
          }
          else
          {
             chemin.append('.');
          }
          return chemin.toString();
       }

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut
    Attention code de JHelp non portable

  11. #11
    Membre expérimenté
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Par défaut
    Citation Envoyé par Pierrot Le Ouf
    Attention code de JHelp non portable
    As tu lu les commentaires ?
    Pour une url, et getResource le séparateur de nom de dossier est toujours / quelque soit la plateforme. Tout comme .. et . qui sont reconnus par la classe URL et getRessource et pas par File. C'est pour celà que j'ai précisé dans les commentaires dans quel cas on peut utiliser les méthodes.
    Bon je te pardonne, viens on se va se reconsillier autour d'un verre

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 9
    Par défaut
    Je suis démasqué, effectivement j'avais pas lu les commentaires comme souvent


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

Discussions similaires

  1. [jsp] request.getParameter(path d'un fichier)
    Par Stessy dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 01/04/2005, 15h18
  2. [JAR]Class-Path dans le fichier Manifest
    Par Kleb dans le forum Général Java
    Réponses: 5
    Dernier message: 08/01/2005, 09h51
  3. [langage] variable dans le path d'un fichier
    Par caro_du_94 dans le forum Langage
    Réponses: 2
    Dernier message: 21/10/2004, 13h03
  4. Chercher et renvoyer le path d'un fichier .java
    Par dzincou dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 08/09/2004, 12h00
  5. [debutant][Fichier] Comment obtenir le path de mon fichier ?
    Par Soulsurfer dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 22/06/2004, 18h09

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