2010-04-14 4 views
0

J'ai essayé de charger dynamiquement une image de manière dynamique pendant le temps d'exécution et j'ai jeté un oeil à d'autres articles sur ce site et je n'ai pas encore trouvé exactement ce qui marchera. J'essaie de charger une image pendant que mon interface graphique est en cours d'exécution (en cours d'exécution) et j'ai essayé différentes choses. En ce moment, j'ai trouvé que la façon la plus simple de créer une image est d'utiliser un JLabel et d'y ajouter un ImageIcon. Cela a fonctionné, mais quand je vais le charger après l'exécution de l'interface graphique, il échoue en disant qu'il y a une "NullPointerException". Voici le code que j'ai jusqu'à présent:Comment ajouter dynamiquement une image à l'exécution dans java

p = Runtime.getRuntime().exec("python C:\\FaceVACS\\roc.py " + "C:/FaceVACS/OutputCMC_" + target + ".txt " + "C:/FaceVACS/ROC_" + target + ".png"); 
Icon graph = new ImageIcon("C:\\FaceVACS\\OutputCMC_" + target + ".png"); 
roc_image.setIcon(graph); 
panel.add(roc_image); 
panel.revalidate(); 
gui.frame.pack(); 

J'ai essayé panel.validate(), panel.revalidate(), et je l'ai aussi essayé gui.getRootPane(), mais je ne peux pas sembler trouver tout ce qui va fonctionner.

Des idées seraient utiles! Merci

Répondre

2

getRuntime().exec est pour le lancement d'un programme externe. Pour charger simplement un fichier à utiliser dans votre application Java, vous pouvez simplement le traiter comme n'importe quel autre fichier. En effet, si vous utilisez Swing, le constructeur ImageIcon prendra comme argument un String contenant le chemin du fichier.

How to add an image to a JPanel?

La question ci-dessus explique comment ajouter une image à un JPanel et cela peut être fait à l'exécution par un gestionnaire d'événements.

+0

je sorte de donner un contexte pour pourquoi j'ajouter une image avec le p.Runtime.getRuntime() exec() ... qui est juste en cours d'exécution d'un script python qui sauve l'image Je cherche à poster. Cela n'a rien à voir avec l'image, sauf pour la générer. – Brandon

0

Vous pouvez également utiliser des étiquettes pour afficher des images. Ce tutorial vous montre comment.

+0

roc_image est une étiquette ... donc elle est déjà ajoutée à une étiquette. – Brandon

2

qui est juste en cours d'exécution d'un script python qui sauve l'image que je cherche à poster

sons comme le problème est que le code tente charge l'image avant que le script python se termine création de l'image . Essayez:.

Process p = Runtime.getRuntime().exec("..."); 
p.waitFor(); 
Icon icon = new ImageIcon(...); 
+0

+1 pour 'waitFor' L'intégralité du traitement (invocation du script et attente du résultat) doit être exécutée dans un thread séparé. Sinon, il gèlera l'interface utilisateur. Plus tard, il devrait appeler 'SwingUtilities.invokeLater' pour mettre à jour l'interface utilisateur – OscarRyz

Questions connexes