Folder tree

0

Witam.

Kiedyś bawiłem się w Java, później przesiadłem na C# (w C# jednak jest prościej :) ), a teraz coś mnie kusi, żeby wrócić do Javy. I od razu mam problema. Wymyśliłem sobie pewien program. W C# już go zacząłem pisać, ale pomyślałem, że w Javie to będzie nowe wyzwanie :) Do programu potrzebuję (między innymi) drzewo folderów. Chciał bym, żeby było tak skonstruowane, jak w wielu różnych programach graficznych, czy managerach plików. Korzeń to by był pulpit, w nim widoczne wszystkie foldery fizyczne i wirtualne (Moje dokumenty itp) i tak dalej. Mniej więcej tak by to miało wyglądać:

http://www.codeproject.com/KB/dialog/XBrowseForFolder/XBrowseForFolder2.png

Ikonki przy folderach to nie są obrazki z resource, tylko odczytywane bezpośrednio z napędów.
A teraz pytanie: jak to zrobić? Jak odczytać drzewo folderów i poukładać w taki sposób?
I kolejne pytanie: czy jest jakiś sposób na wyświetlenie thumbnaila obrazka? I ewentualne nałożenie go na własny obiekt graficzny (tak, żeby dało się do niego dopisać na przykład rozdzielczość, czy nazwę pliku i wyświetlić jako całość)?
Wystarczy, jak mi podacie jakieś tutoriale, lub chociaż nakierujecie na metody :) Kopię od kilku dni po internecie, ale wszystko, co znalazłem, to jakieś bzdury są. Czasem mam wrażenie, że programiści Java nie mają zbyt wysokich wymagań :) Drzewo folderów pokazujące tylko podstawowe dyski fizyczne, albo z ikonkami pobranymi z obrazka, a nie rzeczywiście przypisane do napędów itp...

0

Zainteresuj się tą biblioteką:
http://l2fprod.com/common/

Zrobienie porządnych widgetów odzwierciedlających możliwości systemów Windows, które na dodatek byłyby całkowicie przenośne było w Javie 1-6 bardzo trudne.
Nie było ich właśnie z tego powodu, a nie dlatego, że programiści Javy mają niskie wymagania.
Przede wszystkim dlatego, że dopiero w Javie 7 pojawiła się porządna, przenośna obsługa plików. A co ważniejsze: Ich atrybutów bardziej zaawansowanych niż klasyczne ARHS czy prawa dostępu znane z systemów POSIX oraz bardziej współczesna obsługa drzew katalogów. Dlatego dotychczas trzeba było opierać się na wielu hakach i dostosowaniach do Windows (XP w domyśle). Stąd kontrolki, które byś chciał musiały być pisane przez ludzi/firmy z zewnątrz (Sun nigdy by nie uzależnił funkcjonalności kontrolki od używanego właśnie systemu bo łamie to ideologiczne założenia Swinga).
Na szczęście zmieniło się to w Javie 7, która dostała bardzo ładne i przenośne wsparcie obsługi ścieżek i systemu plików. Dzięki temu łatwiej takie kontrolki napisać samemu i mogą być one w większym stopniu przenośne. Tyle, że to jest proces, który właśnie trwa. Na przykład powyższa biblioteka może być właśnie dostosowywana do Javy 7 (choć nie mam pewności, a nikt z nas tego nie sprawdzi), choć ty sam możesz podobną (i przenośną) kontrolkę typu jakiegoś specyficznego JTree zrobić znacznie łatwiej.

Co do odczytywania z systemu informacji, których nie ma w standardzie Javy, to można próbować bawić się JNI, ale lepszym pomysłem moim zdaniem jest użycie dostępu do rejestru Windows. W tym wypadku sprawa jest ułatwiona przy pomocy tego lekko poprawionego kawałka kodu:
http://stackoverflow.com/questions/62289/read-write-to-windows-registry-using-java
który pochodzi stąd (skądinąd niezwykle przydatna dla różnych programistów strona):
http://www.rgagnon.com/javadetails/java-0630.html

0

Dzięki. Pooglądam, popatrzę... Chociaż pierwszy problem już zauważyłem. Link do ściągnięcia pliku nie działa. Znalazłem w necie kilka, ale same stare wersje. No cóż. Lepsza starsza wersja niż żadna.

0

Nie jest Javowcem, ale nie będzie lepiej właśnie użyć jakieś JNA czy JNI i korzystając z funkcji systemowych wyświetlić dokładnie to, co autor pokazuje na obrazku? Taki dialog wyboru katalogu otwiera się funkcją SHBrowseForFolder.

0
adf88 napisał(a):

Taki dialog wyboru katalogu otwiera się funkcją SHBrowseForFolder.

Na pewno? Mi nie chodzi o okno, które się otwiera, wybieramy folder, a ono się zamyka. Chodzi mi o drzewo folderów, które mam cały czas w swoim oknie na jakimś panelu. Wybieram sobie folder, a w drugim panelu (w tym samym oknie) wyświetlam jego zawartość. Ale drzewo folderów nie zamyka się, tyko cały czas jest otwarte. Dokładnie tak, jak tu:

http://files.acdsystems.com/english/presskit/screenshots/web/acdsee10-screenshot1-web.jpg

Po lewej u góry masz drzewo folderów, a obok zawartość zaznaczonego folderu. W C++, czy C# wszystko w takim drzewie trzeba oprogramować ręcznie. Ale jest to do zrobienia. I szukam właśnie w Java czegoś takiego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1