Marcin Nizioł

Marcin Nizioł Analityk SI /
programista C#, RCGW
S.A.

Temat: Wzgledna sciezka do obrazka

Witam

napotkalem pewnien problem. Czy da sie w jakis sposob ustawic wzgledna sciezke dla obrazka ladowanego na JLabel jako Icon ? (sprawa dotyczy aplikacji desktopowej opartej o JFrame).
Chodzi mi o cos w stylu podawania sciezek do zasobow, jak np w stroncha html.

Ewentualnie prosze o wskazowke, jak ladnie umiescic plik/plik z grafika, zeby byl on uniezalezniony od zmiany lokacji programu.

z gory bardzo dziekuje za pomoc i wskazowki
pozdrawiam
Marcin
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: Wzgledna sciezka do obrazka

Przypuszczam, że chodzi Ci o pliki z obrazkami znajdującymi się 'obok' pliku jar. Jest wiele sposobów.
Ścieżkę gdzie jest aplikacja możesz poznać na przykład tak:
String path = new java.io.File(".").getCanonicalPath();

albo:
String path = System.getProperty("user.dir");
Przemysław Rumik

Przemysław Rumik kodowanie to moja
specjalność ;-)

Temat: Wzgledna sciezka do obrazka

Marcin Nizioł:
Ewentualnie prosze o wskazowke, jak ladnie umiescic plik/plik z grafika, zeby byl on uniezalezniony od zmiany lokacji programu.

Jak przypuszczam aplikacja będzie dystrybuowana jako JAR, dlatego warto wrzucić obrazki do JARa.
Coś w tym stylu to załatwi:

URL url = getClass().getResource("/image.gif");
ImageIcon icon = url == null ? null : new ImageIcon(url);
Przemysław Rumik edytował(a) ten post dnia 17.09.08 o godzinie 09:15
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: Wzgledna sciezka do obrazka

[pusty post] - nie umiem usuwać ;)Zacheusz Siedlecki edytował(a) ten post dnia 17.09.08 o godzinie 05:17
Zacheusz Siedlecki

Zacheusz Siedlecki Senior Java
Architect, Working
Manager

Temat: Wzgledna sciezka do obrazka

Marcinowi chyba chodziło właśnie o umieszczanie obrazków obok jara bez przepakowywania go
Może jestem czepialski (taki off-topic) ale jeśli chodzi o Twój fragment kodu to unikałbym puszczania dalej null - pointera. Moim zdaniem zdecydowanie lepsze i mniej błędogenne jest od razu zgłaszanie wyjątku jeśli czegoś nie możemy znaleźć lub zaniechanie jakiejś akcji a nie rozsyłanie po aplikacji nullów :)
Marcin Nizioł

Marcin Nizioł Analityk SI /
programista C#, RCGW
S.A.

Temat: Wzgledna sciezka do obrazka

Zacheusz Siedlecki:
Marcinowi chyba chodziło właśnie o umieszczanie obrazków obok jara bez przepakowywania go

To nawet niekoniecznie ;) jesli jest mozliwosc 'wtloczenia' obrazka (dosyc malego) 'na stale' do jar'a to bardzo chetnie :)
Co do nulli itp, to obrazek ma byc po prostu malutkim logiem, wiec raczej nie powinien nigdzie 'zaginac' ;)
Dzis po poludniu przetestuje obie metody.
Wam Panowie bardzo dziekuje za pomoc !!
I jesli sa inne propozycje, to chetnie je poznam ;)

pozdrawiam
Marcin

konto usunięte

Temat: Wzgledna sciezka do obrazka

Marcin Nizioł:
Ewentualnie prosze o wskazowke, jak ladnie umiescic plik/plik z grafika, zeby byl on uniezalezniony od zmiany lokacji programu.

z gory bardzo dziekuje za pomoc i wskazowki

Osobiście w aplikacjach desktopowych pakuje klasy w plik JAR. Resztę plików umieszczam obok spakowanego pliku, np.

/classes.jar
/pics/pic1.png
/pics/pic2.png
...

Dodatkowo do manifestu dodaje "Class-Path: .".
Przemysław Rumik

Przemysław Rumik kodowanie to moja
specjalność ;-)

Temat: Wzgledna sciezka do obrazka

Zacheusz Siedlecki:
Może jestem czepialski (taki off-topic) ale jeśli chodzi o Twój fragment kodu to unikałbym puszczania dalej null - pointera. Moim zdaniem zdecydowanie lepsze i mniej błędogenne jest od razu zgłaszanie wyjątku jeśli czegoś nie możemy znaleźć lub zaniechanie jakiejś akcji a nie rozsyłanie po aplikacji nullów :)

Zależy co jest dalej w kodzie, ogólnie dobrze żeby kod działał bez żadnych odgórnych założeń np. wiary, że w zmiennej nie ma null'a ;-)
Żeby wyrzucić jakiś sensowny wyjątek trzeba go stworzyć [w sensie klasy] i obsłużyć wyżej, można też spróbować żyć z tym null'em. Zakładając, że obrazek jest w JARze najzdrowiej byłoby chyba w takim momencie wyrzucić wyjątek z informacją, że JAR aplikacji uległ zmianie.
No i w tym przypadku jeżeli np. dodajemy ten obrazek do JLabel'a to i tak nic się nie stanie :-)

Podobne tematy


Następna dyskusja:

Histogram dla obrazka




Wyślij zaproszenie do