dynamiczne otwieranie plików graficznych

0

Witam.

Pisze program, który ma działać jak przeglądarka do zdjęć. Oczywiście wyswietlany będzie jeden obraz, jednak chciałbym w podglądzie wyświetlać (jako miniatury) ten oraz dodatkowo dwa sąsiadujące. Moje pytanie dotyczy ładowania tych plików. Na razie udało mi się zaimplementować otwieranie jednego pliku. Jednak docelowo ma to wyglądac tak, że w komponencie JFileChooser wybieram folder i następnie ładują się z niego pierwszy plik i dwa sąsiadujące (wg. alfabetu) o ile oczywiście takie pliki w tym katalogou istnieją. Zatem jak to zrobić? Czy istnieją jakies metody typu następny plik, poprzedni plik? Co w ogóle zrobić, aby po podaniu folderu wszytywał sie z niego plik graficzny (pierwszy wg. alfabetu)?

bardzo prosze o pomoc..

0

Jak otwierasz katalog ze zdjęciami to jest on traktowany jak zwykła klasa File. Jest tam metoda getFiles():File[], która zwraca tablicę wszystkich plików z danego katalogu. Teraz wystarczy, że będziesz operował natej tablicy.

0
Koziołek napisał(a)

Jak otwierasz katalog ze zdjęciami to jest on traktowany jak zwykła klasa File. Jest tam metoda getFiles():File[], która zwraca tablicę wszystkich plików z danego katalogu. Teraz wystarczy, że będziesz operował natej tablicy.

Nie bardzo rozumiem. Do wyboru katalogu używam obiektu kalsy JFileChoosera (dodatkowo, aby zawęzić wybór tylko do katalogów uzywam metody setFileSelectionMode() z parametrem JFileChooser.DIRECTORIES_ONLY). Większość metod tej klasy zwraca ścieżkę do katalogu w postaci obiektu klasy String.
W klasie File faktycznie istnieje metoda zwracająca stablicowana zawartość katalogu (listFiles()). Ale nie bardzo wiem jak połączyć to ze sobą.
Mam jeszcze takie pytanko na jakim etapie nastepuje filtrowanie plików (tylko .jpg), tak jak poprzednio przy wyborze pojedynczego pliku w JFilechooser, czy coś się zmienia??

0

No właśnie, jak masz obiekt File przedstawiający ścieżkę do folderu ze zdjęciami, to wywołujesz właśnie funkcję getFiles(). Zwraca ona wszystkie pliki i foldery, które znajdują się w folderze, którego wybór następuje w JFileChooser'ze.
Jak pobierzesz te pliki, to musisz jeszcze wyrzucić foldery i pliki nie będące zdjęciami (na pewno znajdzie się gdzieś w API taka funkcja).
Potem możesz z takimi odfiltrowanymi plikami robić co chcesz - segregować (chyba trzeba stworzyć własnego Comparator'a, ale nie jestem pewien), no i to, co Cię interesuje - pobrać dwa następujące pliki.

Ostatniego pytania nie za bardzo zrozumiałem.

0

ok. łopatologicznie:

//... jakiś tam kod z JFileChooser daje nam String dirName i dalej:
File directory = new File(dirName ); // mamy nasz katalog w postaci pliku
File[] files = directory.listFiles(); // otrzymaliśmy listę plików
List<File> photos = new LinkedList<File>(); // tylko foty
for(File f : files){
   if(f.isFile() && f.getAbsolutePath().matches(".*\\.jpg")){
      photos.add(f);
   }     
}

i dalej pracujesz z listą photos

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