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 :

Deux petits problèmes : accèder à un fichier dans un package proche et utilisation de "isObjectOf"


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut Deux petits problèmes : accèder à un fichier dans un package proche et utilisation de "isObjectOf"
    Bonsoir à tous !

    Des petits problèmes tout bête m'empêchent d'avancer dans mon projet :
    1. Dans mon package truc je cherche à ouvrir une image qui est dans mon package truc.bidule.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Je créé le lien
    String img = "/bidule/img.jpg";
     
    //Puis je la stocke
    BufferedImage g = ImageIO.read(new File(img));

    Ca ne marche point ^^

    2. Je cherche à faire un test sur un de mes objets : est-il un objet de la classe bicTrace ou BayTrace ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Trace tr;
     
    public instance(Trace tr) {
    this.tr = tr;
    if(tr.isObjectOf(bicTrace)) {
    do...
    } else {
    do..
    }
    }

    Et ça ne marche pas non plus :/

    Merci de vos réponses

  2. #2
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    //Je créé le lien
    String img = "/bidule/img.jpg";
    Le chemin de l'image sur la machine est donc /bidule/img.jpg. Apparemment, tu as les images dans un package, donc dans ton classpath. Pour cela, utilise la méthode Class#getResource (voir la Javadoc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ImageIO.read(new File(getClass().getResource("bidule/img.jpg").toURI());
    Attention à ne pas mettre de / devant, car tu n'es pas à la racine du classpath.

    if(tr.isObjectOf(bicTrace))
    C'est quoi cette horreur ? Utilise plutôt le polymorphisme :

    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
     
    interface Trace{
      public void doSomething();
    }
     
    class BicTrace implements Trace {
      public void doSomething() {
        // specifique a BicTrace
      }
    }
     
    class BayTrace implements Trace {
      public void doSomething() {
        // specifique a BayTrace
      }
    }
     
    (...)
     
    Trace tr = /* ce que tu veux */;
    tr.doSomething(); // si instance de BicTrace, appelle le specifique a BicTrace, et vice versa.

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut
    Merci pour le premier ^^

    Le deuxième, ce n'est pas ça mon problème. C'est déjà ce que j'ai fait.
    Ce que j'ai besoin de savoir c'est si la trace donnée en paramètre du constructeur est un objet de BayTrace ou BicTrace (toutes deux héritant de la classe Trace).
    En effet, en fonction du cas, je vais ajouter des options ou non sur mon panel, je ne dois pas appeler simplement une méthode.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Lyuna Voir le message
    Ce que j'ai besoin de savoir c'est si la trace donnée en paramètre du constructeur est un objet de BayTrace ou BicTrace (toutes deux héritant de la classe Trace).
    En effet, en fonction du cas, je vais ajouter des options ou non sur mon panel, je ne dois pas appeler simplement une méthode.
    Le code pour tester l'instance est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (tr instanceof BicTrace)
    La méthode que t'avais tenté d'utiliser prend en paramètre des objets de type Class<?>

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Patriarch24 Voir le message
    Pour cela, utilise la méthode Class#getResource (voir la Javadoc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ImageIO.read(new File(getClass().getResource("bidule/img.jpg").toURI());
    Attention à ne pas mettre de / devant, car tu n'es pas à la racine du classpath.
    C'est bien d'utiliser getResource() pour accéder à un élément du classpath... Mais c'est con d'utiliser la classe File qui attend forcément un fichier "standard" et qui plantera une fois que tout cela sera packagé en Jar !

    getResource() renvoi une URL qui est exploitable indépendamment de l'emplacement exact de l'élément. Autant utiliser cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ImageIO.read( getClass().getResource("bidule/img.jpg") );
    a++

  6. #6
    Membre confirmé
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Par défaut
    Merci à tous ! Cela fonctionne

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/07/2007, 12h42
  2. Réponses: 7
    Dernier message: 12/09/2006, 14h22
  3. [TPAbbrevia] Problème ajout de fichiers dans archive
    Par Pill_S dans le forum Composants VCL
    Réponses: 4
    Dernier message: 13/10/2005, 23h18
  4. [JAR] Accéder à un fichier dans un jar
    Par Nanoua dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 06/07/2004, 13h00

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