Null pointer exception lorsqu'une ImageIcon est ajouté à jbutton dans NetBeans
Une ImageIcon est ajouté à bouton propriétés à l'aide de NetBeans.
print.setFont(new java.awt.Font("Serif", 0, 14));
print.setIcon(new javax.swing.ImageIcon(getClass().getResource("/project/print.gif")));
print.setMnemonic('P');
print.setText("Print");
print.setToolTipText("Print");
Et lors de la compilation il montre
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:205)
at project.Editor.initComponents(Editor.java:296)
Ce que je fais mal?
- Le problème est avec
getClass().getResource("/project/print.gif"))
. Je parie que l'image que vous recherchez ne peut pas être trouvé à l'emplacement que vous essayez de point. - Print.gif l'image se trouve dans /project/print.gif et l'erreur est la même que ci-dessus.
- votre ressource getClass().getResource("/project/print.gif") peut être null pl vérifier
- Étapes pour vérifier la getClass().getResource("/project/print.gif").
- quelle est la méthode getClass ? il devrait être YourClassName.c'.getClass()
Vous devez vous connecter pour publier un commentaire.
La raison que vous obtenez une NullPointerException est parce que, pour une raison quelconque, le fichier image que vous essayez de spécifier est introuvable. Ainsi, le
getResource()
méthode renvoie une valeur null.Pour commencer, vous pouvez lire sur l'ajout d'icônes dans ce lien: "Comment Utiliser les Icônes"
L'un des moyens qu'ils proposent est de créer une méthode:
L'avantage de cette méthode, en plus d'être une méthode utilitaire que vous pouvez utiliser plusieurs fois à chaque fois que vous souhaitez ajouter une icône, c'est qu'il vous montre également l'erreur dans le cas où l'image ne se trouvaient pas sur le chemin d'accès spécifié.
Je soupçonne fortement que cela a à voir avec le chemin que vous avez fournis. Il serait bon de regarder la structure des dossiers. Essayer de passer le chemin "project/print.gif"
L'expression
getClass().getResource("/project/print.gif")
invoque la méthode getClass (hérité indirectement à partir de la classe de l'Objet ) pour récupérer une référence à la Classe de l'objet qui représente le "Rédacteur en chef de classe" (votre classe) de la déclaration. Cette référence est ensuite utilisé pour invoquer la Classe de la méthode getResource, qui renvoie l'emplacement de l'image sous forme d'une URL. Le ImageIcon constructeur utilise l'URL pour localiser l'image, puis le charge en mémoire. La JVM des charges déclarations de classe dans la mémoire, à l'aide d'un chargeur de classe. Le chargeur de classes sait où chaque classe de charge se trouve sur le disque. Méthode getResource utilise la Classe classe de l'objet loader pour déterminer l'emplacement d'une ressource, comme un fichier image. Par conséquent, vous obtenez une NullPointerException et, le fichier image doit être stockée dans le même emplacement que le "Editor.class" fichier. Les techniques que vous avez essayé d'utiliser ici permettre à une application de chargement de l'image des fichiers à partir d'emplacements par rapport à la classe d'emplacement du fichierÀ cause de cela, vous devez déplacer "print.gif" fichier "/nom_projet/bin/nom_du_paquet" du dossier et essayer
print.setIcon(new javax.swing.ImageIcon(getClass().getResource("print.gif")));
au lieu de
print.setIcon(new javax.swing.ImageIcon(getClass().getResource("/project/print.gif")));