przeglądanie plików i katalogów na dysku oraz zmiana rozm

0

Hej

Potrzebny mi kod który za pomocą javy będzie mi wyświetlał pliki i katalogi dysku (może być tylko podpowiedź) :-)
poza tym czy jest funkcja w javie żeby zmieniać rozmiary obrazka.
Dzięki za pomoc :-)

0

w swingu jest komponent na to JFileChooser
to typowe oienko dialogowe służące do wyboru plików

JFileChooser jfc=new JFileChooser();
jfc.showDialog(null,"JakiśTamOpis"); wywołuje to okienko
a wybrany plik pobierasz np. za pomocą metody getAbsolutePath()

a rozmiar okna zmienaisz przez setSize(int x, int y);

możesz to także zrobić bez swinga:

String directory="jakiśTamKatalog";
File dir=new File(File.separator+directory);
String [] pliki=dir.list();
i w pliki masz listę wszystkich plików z tego katalogu

0

Dzięki za pomoc dotyczącą pliku :). Co do drugiej części to niechcę zmienić rozmaru okna tylko obrazka png lub jpg. Czy w ogóle jest to możliwe :)

0

Rozumiem ze chcesz moc np. plik gif o wielkosci 8 KB zamienic na wielkosc 100 MB lub inna? Chyba nie mozna tak zrobic, ale jaki jest zreszta sens takiej operacji??

0

jeśli chodzi ci o obrazek, z którego korzystasz i chcesz zmienić jego rozmiar w programie to najprostszą metodą jest użycie wykreślacza:
Image obraz //załóżmy że tu masz obraz
float wsp //to jakiś tam współczynnik powiększenia np. 1.5

BufferedImage temp=new BufferedImage(obraz.getWidth(null)*wsp,obraz.getHeight(null)*wsp,BufferedImage.TYPE_4BYTE_ABGR); //stworzenie jego kopii o odpowiednich rozmiarach
Graphics gDC=temp.getGraphics(); //wykreślacz do kopii
gDC.drawImage(obraz,0,0,obraz.getWidth(null)*wsp,obraz.getHeight(null)*wsp,null); //wymalowanie obrazu w buforze
gDC.dispose(); //zwolnienie wykreślacza, teraz w tempie masz nowy, większy obrazek
ImageIcon temp2=new ImageIcon(temp);
Image nowy=temp2.getImage(); //i w image masz już nowy obrazek

0

Dzięki za pomoc. Popróbuje bo ja muszę stworzyć obrazki o wielkości 2 do jakieś potęki. :-) [browar]

0

Co do listy katalogów to pierwszy kod działa wyśmienicie ale ten poniższy kod nie

           String directory="obraz";
           File dir=new File(File.separator+directory);
                String [] pliki=dir.list();

mam to podłączyć do nowego okna czy jak.

lub jak to zmienić żeby było widoczne tylko obrazki jpg i png
JFileChooser jfc=new JFileChooser();
jfc.showDialog(null,"JakiśTamOpis"); // wywołuje to okienko

0

ta druga wersja ( z Dir) pop rostu tworzy ci litę plików z danego katalogu i umieszcza w tablicy String. Jest to przydatne jeśli np. tworzysz jakieś Combo z listą, z którego wybierasz jeden element.

w JFileChooser jest możliwość ustawienia filtrów, które poażą ci jedynie określone pliki, poniżej prosta wersja:

JFileChooser jfc=new JFileChooser(); //konstruktor
jfc.setFileFilter(new FileFilter(){ //dodanie filtrów
public boolean accept(File f) {
String name=f.getName().toLowerCase();
return name.endsWith(".gif") //jakie chcesz formaty
|| name.endsWith(".jpg");
}
public String getDescription() {
return "Obrazki"; //opis typów
}
});

0

Jesteś wielki :-). Dzięki za pomoc.
Jakbyś mi mógł jeszcze powiedzieć czy do pierwszej wersji idzie dodać wyświetlanie tych obrazków. :)

0

Poniższy kod wyświetla mi całą ścieżkę na którym znajduje się mój wybrany plik. A ja bym chciała żeby mi wyświetlał tylko nazwę pliku i rozszerzenie. :d

String filename = jfc.getSelectedFile().getAbsolutePath();
//openFile(filename);
System.out.println("" + filename);
}

0
betmira napisał(a)

Jesteś wielki :-). Dzięki za pomoc.
Jakbyś mi mógł jeszcze powiedzieć czy do pierwszej wersji idzie dodać wyświetlanie tych obrazków. :)

Jest to możliwe. Musisz na chooserze wykonać metodę:
fc.setAccessory(new ImagePreview(fc));
a klasę ImagePreviev ściągnij sobie z tąd:
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/ImagePreview.java
a tak ogólnie to masz fajny przykład na:
http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html#advancedexample

0
mwach20 napisał(a)
betmira napisał(a)

Jesteś wielki :-). Dzięki za pomoc.
Jakbyś mi mógł jeszcze powiedzieć czy do pierwszej wersji idzie dodać wyświetlanie tych obrazków. :)

Jest to możliwe. Musisz na chooserze wykonać metodę:
fc.setAccessory(new ImagePreview(fc));
a klasę ImagePreviev ściągnij sobie z tąd:
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/ImagePreview.java
a tak ogólnie to masz fajny przykład na:
http://java.sun.com/docs/books/tutorial/uiswing/components/filechooser.html#advancedexample

tzn co co teraz podałem to umożliwia wyświetlanie miniaturek obrazków w oknie filechoosera, a jeśli chcesz wczytywać te obrazki do programu to robi się to tak:
if((fc.showDialog(null,"Wybierz"))==JFileChooser.APPROVE_OPTION){
ImageIcon icon=new ImageIcon(fc.getSelectedFile().getAbsolutePath());
Image obraz=icon.getImage(); //w obraz masz wybrany obrazek
}

0
betmira napisał(a)

Poniższy kod wyświetla mi całą ścieżkę na którym znajduje się mój wybrany plik. A ja bym chciała żeby mi wyświetlał tylko nazwę pliku i rozszerzenie. :d

String filename = jfc.getSelectedFile().getAbsolutePath();
//openFile(filename);
System.out.println("" + filename);
}

filename=jfc.getSelectedFile().getName()

0

DZIEKI [browar] . Dzięki takim osobą jak ty programowanie jest przyjemnością :). [soczek] Pozdrawiam i życzę miłego programowania :)

0

filename=jfc.getSelectedFile().getName()

a żeby była sama nazwa pliku bez rozszeżenia ??:)

0
betmira napisał(a)

filename=jfc.getSelectedFile().getName()

a żeby była sama nazwa pliku bez rozszeżenia ??:)

najprościej to chyba tak:
String plik; //tutaj nazwa pliku np plik.txt
plik=plik.substring(0,plik.lastIndexOf('.')); //wycinasz kawałek nazwy od początku do ostatniego wystąpienia kropki (tzn przed rozszerzeniem)

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