2011-12-28 12 views
6

Możliwa powielanie (rozwiązany): https://stackoverflow.com/a/1133132/783469Jak załadować ikonę z zasobu w Javie?

mam ikony (JPG, PNG) dla mojej aplikacji, która jest przechowywana w moim katalogu /var/tmp/gameXbox/src/image/<here>. Teraz, jak mogę ich używać w aplikacji, bez korzystania z twardego łącza, ale jako zasób?

Przykład: nie działa

IconForMyButton = ImageIO.read(new File(
        ClassLoader.getSystemResourceAsStream("image/button1.png") 
       )); 

enter image description here

Works kiedy zrobić z twardego linku:

IconForMyButton = ImageIO.read(new File(
         "/var/tmp/gameXbox/src/image/button1.png" 
       )); 
+2

Upewnij się, że obrazy znajdują się w ścieżce klas aplikacji i użyj odpowiedniego linku – Robin

+0

Co chcesz załadować? Obraz ze ścieżki klas lub systemu plików? To jest różnica. Miksujesz oba. –

+0

@Google: Najpierw potwierdź, chcesz wyświetlić tę ikonę na przycisku, jak sugeruje twoja zmienna. Czy mam rację? Pozdrawiam –

Odpowiedz

9

zasobów ładowanie odbywa się w ścieżce klasy, w stosunku do obecnego pakietu. Jeśli /var/tmp/gameXbox/src/ jest w ścieżce klas, a następnie:

ImageIO.read(ClassLoader.getSystemResource("image/button1.png")); 

Jednak zazwyczaj folder src jest nie zawarte w ścieżce klasy przez IDE. Spróbuj dodać zdjęcie do folderu bin.

+0

project/build/classes/image/* istnieć. Ale nie działa. Zobacz moją edycję powyżej. – YumYumYum

+0

Edytowałem swoją odpowiedź. Nawet nie zdawałem sobie sprawy. Próbowałeś utworzyć obiekt 'File' z' InputStream' i I, z 'URL'. – Darkhogg

+0

import javax.imageio. *; (aby używać ImageIO) – shieldgenerator7

4

Zwykle używam class.getResource dla tego rodzaju operacji:

YourClass.class.getResource("image/button1.png") 

go używać, aby pobrać plik z archiwum jar ale powinien działać również pobrać z zasobów systemu plików.

0

Obrazy nie przechodzą do folderu źródłowego, ale do folderu zasobów. Napraw IDE i używaj Mavena, a będzie działać z getResourceAsStream z bieżącym programem ładującym klasy.

Powiązane problemy