Qu'est-ce que le chemin d'accès correct pour afficher une ImageIcon fichier png pour Windows 7?
J'ai voulu tester d'avoir un programme avec une simple image png. J'ai écrit un court programme qui fait ça, mais je n'arrive pas à obtenir le chemin à droite. J'ai contrôlé, vérifié, revérifié, et quadruple vérifié mon nom de chemin d'accès pour ne pas obtenir ce droit, mais cette image ne s'affichera pas, peu importe ce que je fais. J'ai utilisé un court de classe écrit par Oracle dans le ImageIcon de la documentation (le creaetImageIcon()
) pour ce faire, mais il ne semble pas aider. Je vais poster l'intégralité du programme ci-dessous, car il est très court.
package practiceImages;
import java.awt.BorderLayout;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ImageIconGUITest {
public static void main(String[] args) {
ImageIconGUITest gui = new ImageIconGUITest();
gui.display();
}
private ImageIcon createImageIcon(String path, String description) {
java.net.URL imgURL = getClass().getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.err.println("Couldn't find file: " + path);
return null;
}
}
private void display() {
JFrame frame = new JFrame();
JLabel label = new JLabel(createImageIcon(
"Users/Evan/javaItems/Sprites_and_Other_Art/green.png", "the color green"));
frame.add(BorderLayout.CENTER, label);
frame.setSize(500, 500);
frame.setVisible(true);
}
}
Tout d'abord, vous avez fourni un chemin d'accès relatif, de sorte que le système est à la recherche de l'image par rapport à l'emplacement que vous avez exécuté le programme. Deuxièmement, le chemin d'accès doit disposer d'un lecteur spec ou au moins l'un des principaux
Pouvez-vous aller plus en détail sur un chemin relatif? Qu'est-ce que cela signifie? Aussi, l'ajout de l'unité spec nid pas de travail.
1 - assurez-vous que le fichier existe dans l'emplacement spécifié
Vous pouvez tester cela en utilisant le Système..println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").getAbsolutePath())` qui vous donnera le chemin d'accès complet.
envie de poste comme une réponse.
/
. Selon votre installation, quelque chose comme C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png
devrait fonctionner (vous devrez peut-être modifier le lecteur spec pour répondre à votre système)Pouvez-vous aller plus en détail sur un chemin relatif? Qu'est-ce que cela signifie? Aussi, l'ajout de l'unité spec nid pas de travail.
1 - assurez-vous que le fichier existe dans l'emplacement spécifié
System.out.println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").exists())
doit retourner true, sinon le fichier est dans le mauvais endroit. 2 - Un chemin d'accès relatif signifie essentiellement un chemin d'accès de l'emplacement par rapport aux programmes d'exécution. Donc, si vous exécutez le programme à partir de C:/Program Files/MyAwesomeApplication
par exemple, un chemin d'accès relatif de Users/Evan/javaItems/Sprites_and_Other_Art/green.png
serait effectivement ressembler C:/Program Files/MyAwesomeApplication/Users/Evan/javaItems/Sprites_and_Other_Art/green.png
Vous pouvez tester cela en utilisant le Système..println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").getAbsolutePath())` qui vous donnera le chemin d'accès complet.
envie de poste comme une réponse.
OriginalL'auteur user2398233 | 2013-05-19
Vous devez vous connecter pour publier un commentaire.
La
getResource(String)
méthode ne pourra trouver des ressources qui sont sur le chemin de classe de l'application. Depuis cette image semble comme une ressource d'application (c'est à dire que vous avez fournies dans le cadre de l'application), il devrait être mis sur le moment de l'exécution de chemin de classe.E. G. la Plupart des IDEs avoir un endroit où on peut mettre des ressources à l'intérieur de la structure du projet, qui sera automatiquement inclus au moment de l'exécution. Déplacer (ou copier) l'image de ce chemin.
Puis il devient une question de fournir la bonne
String
. Imaginons-nous votre projet est mis en place quelque chose comme ceci:Donc
Application.java
est danspackage com.our;
, alors que l'image est dans le chemin d'accèsresources/green.png
.Si l'accès à l'image de la
Application
, le chemin d'accès correct serait de (roulement de tambour s'il vous plaît..)"/resources/green.png"
Notes
/
est important. Il raconte l'JRE nous voulons rechercher l'image à partir de la racine de la classe-chemin", par opposition à l'aide d'un chemin d'accès relatif à l'ensemble de la classe elle-même."/resources/green.png"
sera pas localiser une image nommée"/resources/Green.png"
ou"/resources/green.PNG"
.Eclipse chemins
src
répertoire, sélectionnezProperties
au bas du menu.Location
.bin
répertoire qui contient les classes et (espérons-le) de l'image.soupir ne fonctionne pas, mais bon.
Si vous avez aimé, consultez le embedded-ressource info. page qui moi et trashgod ont mis à jour pour être un très Java spécifique info. page. 😉
"n'a pas fonctionné, mais oh bien", Nous aurons besoin de plus de & une meilleure information que tha, si l'on veut avoir une chance de le résoudre. E. G. ce exact étapes avez-vous l'essayer? Quelle IDE (le cas échéant) qui est utilisé? Qu'est-ce que l'inscription de l'
bin
(je pense que c'est l'Éclipse runt temps) répertoire?Note: Cette situation me rappelle pourquoi les nouveaux programmeurs ne devrait pas utiliser un "automagique" IDE. La minute où il se passe quelque chose qui n'est pas selon le plan, conduit à la confusion la plus totale tout simplement parce que vous n'avez pas encore maîtrisé les concepts du temps d'exécution et le temps de compilation de la classe-chemins (et la différence entre eux). Si ce n'est le chemin de classe, ça sera autre chose. Peut-être que vous devriez mettre de l'IDE de côté pour le moment et d'utiliser un simple éditeur (par exemple, TextPad) pour la création de la source.
OriginalL'auteur Andrew Thompson
Tout d'abord, vous avez fourni un chemin d'accès relatif, de sorte que le système est à la recherche de l'image par rapport à l'emplacement que vous avez exécuté le programme.
Deuxièmement, le chemin d'accès doit disposer d'un lecteur spec ou au moins l'un des principaux
/
. Selon votre installation, quelque chose comme "C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png' devrait fonctionner (vous devrez peut-être modifier le lecteur spec pour répondre à votre système)Troisièmement, assurez-vous que le fichier existe dans l'emplacement spécifié,
System.out.println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").exists())
doit retournertrue
, sinon le fichier est dans le mauvais endroit.Un chemin d'accès relatif signifie essentiellement un chemin d'accès de l'emplacement par rapport aux programmes d'exécution. Donc, si vous exécutez le programme à partir de
C:/Program Files/MyAwesomeApplication
par exemple, un chemin d'accès relatif deUsers/Evan/javaItems/Sprites_and_Other_Art/green.png
deviendrait un chemin d'accès absolu deC:/Program Files/MyAwesomeApplication/Users/Evan/javaItems/Sprites_and_Other_Art/green.png
. C'est ce qui décrit le chemin d'accès à partir de la racine de l'emplacement du fichier/dossier en question.Vous pouvez tester cela en utilisant
System.out.println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").getAbsolutePath())
qui va vous donner le chemin d'accès complet.chemin d'accès complet m'a donné C:\Users\Evan\javaItems\Sprites_and_Other_Art\green.png Ce que le diable?
Pour quelle partie??
Oui, je viens de réflexions sur les résultats de ce commentaire voulait dire..
à l'aide de
System.out.println(new File("C:/Users/Evan/javaItems/Sprites_and_Other_Art/green.png").getAbsolutePath))
m'a donné le même chemin.OriginalL'auteur MadProgrammer
À l'aide de ce qu'il est corrigé pour moi:
OriginalL'auteur chandrabhan
utiliser la double barre oblique au lieu d'un , j'ai eu ce problème et je l'ai corrigé . ill vous montrer un exemple :
public Pilote (){
OriginalL'auteur saeedjeebat
Pour obtenir le chemin d'accès d'une image à un texte déposé, ce code va vous aider à
//txtPath est le texte déposé utilisation todiplay le chemin
//lblImage est l'étiquette qui montre l'image
OriginalL'auteur sonic
Que vous devez faire
C:\\Test\\test.png
et pasC:/Test/test.png
OriginalL'auteur Vinni