Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2801 connectés 

 


Dernière réponse
Sujet : [Java]
246tNt Ben ouai mais je peut pas etendre applet vu que j'etend déja Panel ...
 
Parce que dans mon jar, le path relatif est bon...
( je le fait avec visual J++, activer l'empaquetage )

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
246tNt Ben ouai mais je peut pas etendre applet vu que j'etend déja Panel ...
 
Parce que dans mon jar, le path relatif est bon...
( je le fait avec visual J++, activer l'empaquetage )
BifaceMcLeOD Ben avec "jar"...  :p  
 
Dans ton cas, ça marcherait sans doute si une fois le jar construit, ton image panel.jpg avait effectivement pour chemin "NP/toolbox/panel.jpg" (ouvre le jar avec WinZip pour pouvoir voir ça).
 
Pour info, ma fonction de chargement d'image complète est la suivante (on suppose que la classe courante étend java.applet.Applet, ce qui peut toujours être le cas, même pour une application) :
 
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
 
public Image loadImage(String relativeFileName) {
    try {
        URL  codeBase = this.getCodeBase();
 
        return this.getImage(codeBase, relativeFileName);
    }
    catch (NullPointerException e) {
        // Raised if the applet is run as an application
        //  => there is no URL code base
        return Toolkit.getDefaultToolkit().getImage(relativeFileName);
    }
}
 
Et garanti, elle marche bien...

 

[edit]--Message édité par BifaceMcLeOD--[/edit]

246tNt comment tu fait ton jar toi ?
246tNt Oui peut etre de CLASSPATH mais bon, avec le ClassLoader ca marche dans le java de sun ( ca fait planter le JView de microsoft mais bon ... )
 
Je regarderait ca plus tard si j'ai le temps ...
BifaceMcLeOD Depuis un jar, ça m'étonne. Le code que j'utilise marche dans tous les cas (jar ou hiérarchie de classes, applet ou appli), ce que j'ai posté ne fait qu'élimier le cas applet.
 
A mon avis, tu as un problème de CLASSPATH et/ou de fabrication de ton JAR.
246tNt J'ai essayé ca d'abord mais ca ne marche pas si il est dans un jar ou si on execute la classe a partir d'un autre emplacemement (style  java d:\Projet\Test  a partir du c: )
BifaceMcLeOD

246tNt a écrit a écrit :

J'ai trouvé la solution, mes path était correct.
Voila mon code :
 
 String filename = new String("NP/toolbox/panel.jpg" );
 Toolkit tk = this.getToolkit();
 this.m_rawImg = tk.getImage( this.getClass().getClassLoader().getResource(filename) );




C'est bizarre que tu aies besoin de faire explicitement appel au loader de classe...
Il me semblait que le code suivant suffisait...
 
    String relativeFilename = "NP/toolbox/panel.jpg";
    this.m_rawImg = this.getToolkit().getImage(relativeFilename);

petoulachi je rajoute juste pour ceux qui ont des pb à récuperer des images contenues dans un JAR qu'il faut faire attention a la casse (majuscule/minuscule) car,si dans win il  s'en fout, il n'en est pas de meme dans un .jar !
246tNt J'ai trouvé la solution, mes path était correct.
Voila mon code :
 
 String filename = new String("NP/toolbox/panel.jpg" );
 Toolkit tk = this.getToolkit();
 this.m_rawImg = tk.getImage( this.getClass().getClassLoader().getResource(filename) );
BifaceMcLeOD Dans Java, une image ou un fichier de propriétés (.properties) sont gérés exactement de la même façon qu'une classe. Ce sont d'abord des fichiers. Et tous sont chargés en mémoire exactement de la même façon.
 
Après, ce qui est différent, c'est ce qu'on fait du contenu du fichier qui a été copié en mémoire.
 
Quand tu invoques une classe de n'importe où (sauf de son package), il faut que tu spécifies le package de cette classe. Cela va permettre à Java de trouver le fichier .class sur le disque.
Pour les images, c'est pareil. Comme veux-tu que Java invente que les images sont à chercher dans "../icons" ?
 
PS: Inutile de préciser que tu écris une application et non une applet, pour Java, il n'y a quasiment aucune différence ; en fait, seul le point d'entrée, c'est-à-dire la façon de démarrer, diffère. D'ailleurs, tu peux très facilement écrire une application qui se comporte comme une applet.

 

[edit]--Message édité par BifaceMcLeOD--[/edit]

spy2k Je m'excuse 246tNt de m'incruster mais j'ai exactement le meme probleme que toi au niveau du chargement des images qui ne s'effectue pas alors qu'elles sont bien dans mon jar. Et mon appli ne les lit pas paske si je bouge mon jar elles ne s'affichent plus prouvant donc qu'ils les lit pas dans mon jar mais sur mon dur.
 
Je fais bien pourtant un :
 
jar cmf META-INF\MANIFEST.MF MONAPPLI.jar MESCLASSES\*.class icons\*.gif  
 
avec icons qui contient toutes mes images.
 
Je comprends pas comment une image(son nom en fait) peut faire partie d'un package aussi, puisque c'est juste un parametre dans un fonction.
 
BifaceMcLeOD, tu pourrais juste nous expliquer en prenant un exemple ca serait sympa.
 
Merci d'avance.
BifaceMcLeOD Tout simplement parce que le package ou elle se trouve fait partie de son nom. Et il y a concordance parfaite entre packages Java et répertoires sur le disque.
 
Donc : si l'image est dans un autre répertoire, pour Java, elle est dans un autre package. En d'autre termes, il faut que tu donnes, avec le nom de l'image, son chemin par rapport à la "racine" de la hiérachie de tes classes.
246tNt Voila, j'ai une application ( pas une applet )
Elle charge des images. ( style getImage("test.gif" ) )
 
Ca se passe tres bien si j'execute le .class dans le repertoire ou il se trouve (et ou se trouve la gif)
Par contre, si je l'execute depuis un autre repertoire, ca ne vas pas -> Comment trouver le path dans lequel se trouve la class ?
 
Et si j'en fait un jar ca ne marche pas non plus -> Comment faire pour qu'il aille cherche l'image dans le jar ?
 
Merci

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)