Ścieżka do plików

Ścieżka do plików
DU
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 4 lata
  • Postów:143
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

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
DU
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 4 lata
  • Postów:143
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.

Kopiuj
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ć?

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Instrukcja

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

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

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

Może tak:

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

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
0
bogdans napisał(a):

Instrukcja

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

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

Kopiuj
> 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"?

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

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


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
DU
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 4 lata
  • Postów:143
0

Dziękuję bardzo za wyjaśnienie ;)

DU
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 4 lata
  • Postów:143
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"

Kopiuj
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 :/

bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Ma być tak:

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

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
DU
  • Rejestracja:około 9 lat
  • Ostatnio:prawie 4 lata
  • Postów:143
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! :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.