Ścieżka do plików

0

Cześć,
Robię sobie przeglądarkę obrazków, mam 4 buttony, jeden wywołuje jFileChooser gdzie wybieram jakiś obrazek, dwa następne mają mieć funkcje "poprzedni" i "następny", a ostatni to pokaz slajdów. Szukam w dokumentacji jFileChoosera czegoś co da mi ścieżkę do plików ale nie samego pliku tj. zamiast C:\folder\obrazek.jpg ma być c:\folder\ żebym mógł zrobić listę z odfiltrowanymi obrazkami (wszystkie rozszerzenia grafik) ale problem w tym, że pewnie źle szukam bo nie mogę znaleźć. Prosiłbym Was o pomoc.

PS. Chciałbym jeszcze dodać takie coś, że po zamknięciu programu i ponownym odpaleniu zostanie wczytany ostatnio oglądany obrazek więc czy będzie to dobrym pomysłem utworzenie jakiegoś pliku ze ścieżką do ostatnio oglądanego obrazka?

Pozdrawiam

0

Metoda getCurrentDirectory w klasie JFileChooser.
PS. Myślę, że tak.

0

Dzięki ;)
napotkałem teraz jeden problem, a mianowicie taki, że kompilator pokazuje mi błąd przy tworzeniu List<File> obrazki = new LinkedList<File>();
Tutaj kod obsługujący przycisk.

private void buttonNastepnyActionPerformed(java.awt.event.ActionEvent evt) {                                               
        File dokumenty = new File(sciezkaDoFolderu.toString());
        File[] foldery = dokumenty.listFiles();
        List<File> obrazki = new LinkedList<File>(); //tutaj jest błąd
        for(File f : foldery){
            if(f.isFile() && f.getAbsolutePath().matches(".*\\.jpg"+".*\\.jpeg")){//co do tego nie mam pewności czy tak może być
                obrazki.add(f);
            }
        }
    } 

Chcę wsadzić do wyżej wymienionej listy obrazki o rozszerzeniu .jpg, .jpge i inne graficzne, czy tak może być?

0

Instrukcja

List<File> obrazki = new LinkedList<File>();

jest poprawna, ale jeśli masz takie importy
import java.util.;
import java.awt.
;

to nazwa `List` jest niejednoznaczna. 
Użyj wtedy
```java
java.util.List<File> obrazki = new LinkedList<File>();

Może tak:

        String name;
        for(File f : foldery){
            name = f.getName().toLowerCase();
            if(f.isFile() && (name.endsWith("*.jpg") || name.endsWith(".jpeg")){
                obrazki.add(f);
            }
        }
0
bogdans napisał(a):

Instrukcja

List<File> obrazki = new LinkedList<File>();

jest poprawna, ale jeśli masz takie importy
import java.util.;
import java.awt.
;

> to nazwa `List` jest niejednoznaczna. 
> Użyj wtedy
```java
java.util.List<File> obrazki = new LinkedList<File>();

Miałem import ale taki
import java.awt.List
kurcze nawet skorzystałem z funkcji netbeans'a "fix imports" i nie działało. Jaka jest więc różnica między listą z "util", a tą z "awt"?

0

List z awt to komponent graficzny do wyświetlania na ekranie, List z util to kolekcja.

0

Dziękuję bardzo za wyjaśnienie ;)

0

Zająłem się resztą kodu i nie sprawdziłem dokładnie działania kodu, który podałeś.
Po pierwsze nie wiem dlaczego ale "and" && musiałem zamienić na "or" || po f.isFile(), nawet sam tak podałem w drugim poście w kodzie, prosiłbym o wyjaśnienie tego "cudu"

if(f.isFile() || (name.endsWith("*.jpg") || name.endsWith(".jpeg")))

a po drugie w teorii powinno działać name.endsWith ale nie działa bo przepuszcza również pliki z innymi rozszerzeniami i też głowię się dlaczego :/

0

Ma być tak:

if(f.isFile() && (name.endsWith(".jpg") || name.endsWith(".jpeg")))
0

No właśnie wiem, że tak ma być ale już chyba wiem od czego zależał błąd, a mianowicie od gwiazdki przy jpg tj ("*.jpg"), a powinno być (".jpg"). Zostało mi tylko skalowanie obrazków ale widziałem kiedyś podobne tematy na forum więc nie zawracam głowy.
Dzięki pisaniu kodu i Tobie sporo się już nauczyłem chociaż to i tak pewnie kropla w morzu ale bardzo dziękuję za wszystkie odpowiedzi! :)

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