» »

[Java]Listanje slikovnih datotek v izbranem direktoriju

[Java]Listanje slikovnih datotek v izbranem direktoriju

KernelPanic ::

Spostovani!

Imam sledec code chunck:
        JFileChooser dc=new JFileChooser();
        int iIndex=0;

        this.setData(new Vector<CRecordStudent>());

        dc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        if(dc.showDialog(null,
                "Select folder")==JFileChooser.APPROVE_OPTION)
        {
            String path=dc.getCurrentDirectory().getAbsolutePath();
            File directory=new File(path+"\\data"); // HEAVY BUG: Why I do not get selected directory, but its parent?

            File[] fl=directory.listFiles();
            for(File f : fl)
            {
                if(f.getName().toLowerCase().endsWith(".jpg") ||
                   f.getName().toLowerCase().endsWith(".png") ||
                   f.getName().toLowerCase().endsWith(".bmp"))
                {
                    this.data().add(new CRecordStudent(iIndex,
                            String.valueOf(CDefaults.AUTHOR_STUDENT_ID),
                            CDefaults.AUTHOR_SURNAME,
                            CDefaults.AUTHOR_NAME,
                            f.getAbsolutePath()));

                    iIndex++;
                }
            }
Torej, ta koda poklice JFileChooser v rezimu za izbiranje direktorijev. Znotrja tega JFileChooserja izberem direktorij, kjer se nahajajo slike in nato preostali del kode prebere imena slik in pac naredi objekte z temi slikami. Do tu je vse ok. Vendar sem naletel na sledec problem: Ko izberem direktorij in pritisnem gumb "Select Folder", mi ne izbere selektiranega direktorija, ampak njegoveva "oceta", t.i. folderja, ki je nad njim. Vrstica, kjer se to zgodi, je tudi komentirana z "HEAVY BUG" in vidite, da hardkodirano dodam podstring "\\data". Zakaj ob potrditvi izbire ne dobim izbranega diretkorija (njegovi poti), ampak pot njegovega "starsa"?

Lp,
Marko

Mavrik ::

Ja, na katerem OSu pa si? Pa zakaj ne uporabiš konstruktorja "new File(path, "data")"?
The truth is rarely pure and never simple.

KernelPanic ::

Sem na gnidovsih 7 Ultimate (prisiljeno, zahteva nadrejenega), ampak stvar mora delati tudi v Ubuntuju! Aja, pa zato, ker tale "data", ki sem ga dodal, mora iti stran v kodi! In ne vem zakaj mi ne vrne izbranega direktorija, ampak enega nad njim!

Zgodovina sprememb…

KernelPanic ::

Ups, slamparija na delu. Namesto getCurrentDirectory() mora biti uporabljena funkcija getSelectedFile()! ... It's all in the docs ... :D Stvar dela sedaj! Hvala vsem!

Mavrik ::

No daj uporabi drug konstruktor. Saj to, da imata Ubuntu in Windows druge separatorje za pot in da "\\data" ne bo delalo na obeh veš a ne?
The truth is rarely pure and never simple.

KernelPanic ::

Mavrik je izjavil:

No daj uporabi drug konstruktor. Saj to, da imata Ubuntu in Windows druge separatorje za pot in da "\\data" ne bo delalo na obeh veš a ne?
Ja ja, tisto "\\data" sem itak odstranil, bilo je namenjeno samo testiranju! Sedaj dela lepo. Koda:
        JFileChooser dc=new JFileChooser();
        int iIndex=0;

        this.setData(new Vector<CRecordStudent>());

        dc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        if(dc.showDialog(null,
                "Select folder")==JFileChooser.APPROVE_OPTION)
        {
            File directory=new File(dc.getSelectedFile().getAbsolutePath());

            File[] fl=directory.listFiles();
            for(File f : fl)
            {
                if(f.getName().toLowerCase().endsWith(".jpg") ||
                   f.getName().toLowerCase().endsWith(".png"))
                {
                    this.data().add(new CRecordStudent(iIndex,
                            String.valueOf(CDefaults.AUTHOR_STUDENT_ID),
                            CDefaults.AUTHOR_SURNAME,
                            CDefaults.AUTHOR_NAME,
                            f.getAbsolutePath()));

                    iIndex++;
                }
            }
        }

KernelPanic ::

Ok, se eno vprasanje: Ima kdo idejo, kako naj se lotim sledecega problema:
V JFileChooserju bi rad onemogocil "Cancel" gumb ter gumbek "X" (ki zapre okno, na vseh windows platformah naprimer). Torej, kako naj skrijem omenjena kontrolnika?

Lp,
Marko

usoban ::

Za cancel gumb mogoce tole: http://docs.oracle.com/javase/7/docs/ap...

Zgodovina sprememb…

  • spremenil: usoban ()

KernelPanic ::

Hvala, vendar tole sem ze probal, problem je, da z tem pristopom onemogocis tudi gumb za potrditev. Sedaj gledam, kako naj se dinamicno (ko je JFileChooser objekt ze kreiran) "sprehodim" po komponentah (member component), in poiscem zeljeni gumb.

illion ::

v starih časih ko sm delal z javo, sem, če se prav spomnim, moral pri file chooserju narest image preview če si kliknil na sliko. Za ne-default funkcionalnosti je bilo treba extendad class, drugač pa lahko pogledaš tole; najd view z buttnom in ga skrij, če ne gre drugače:

http://stackoverflow.com/questions/1406...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[JAVA] Izpis imen vseh datotek iz direktorija in poddirektorijev

Oddelek: Programiranje
214928 (2957) Slovenet
»

Kontakt obrazec

Oddelek: Izdelava spletišč
62060 (1905) betmen
»

[android] vstavljanje slike

Oddelek: Programiranje
71239 (1136) messi
»

[PHP]Zajem slike iz direktorija

Oddelek: Programiranje
51230 (1147) KernelPanic
»

[Netbeans-Java]Embossing,blurring,sharpening

Oddelek: Programiranje
71134 (1036) t3hn0

Več podobnih tem