Avatar billede gonnemand Nybegynder
13. november 2006 - 06:55 Der er 7 kommentarer

FileFilter i en FileChooser?

Jeg har denne kode til en knap i mit GUI. Problemet er, at det kun skal være muligt at åbne/vælge .txt filer, og kun én fil af gangen.

Jeg har kigget på Java's "FileChooserDemo2" men synes det er noget omstændigt.

Nogen der kan hjælpe mig?

###############################################################
private void openFile()
{
    String textLine = "", textString = "";
    Scanner fileScan;
       
    int returnVal = fc.showOpenDialog(frame);

    if(returnVal == JFileChooser.APPROVE_OPTION)
    {
        File file = fc.getSelectedFile();
         
        try
        {
            fileScan = new Scanner (file);

            while(fileScan.hasNext())
            {
                textLine = fileScan.nextLine();
                textString += textLine +'\n';
            }
        }
        catch (FileNotFoundException exception)
        {
            log.append("Filen kunne ikke findes");
        }
        log.append(textString);
    }
    else
    {
        log.append("Open command cancelled by user." + newline);
    }
    log.setCaretPosition(log.getDocument().getLength());
       
    File file = fc.getSelectedFile();
    frame.pack();
    }
}
##############################################################

pfh tak

Næste problem bliver at lave/oprette og gemme en txt fil, med teksten fra en String... det laver jeg en ny tråd til, når jeg er kommet så langt.
Avatar billede schwarz84 Nybegynder
13. november 2006 - 18:35 #1
Nej, det er såmænd ikke så besværligt. Det kunne se således ud:

        JFileChooser jFileChooser = new JFileChooser();
        jFileChooser.setMultiSelectionEnabled(false);
        jFileChooser.setFileFilter(new FileFilter() {
            public boolean accept(File f) {
                return f.getName().endsWith(".txt");
            }

            public String getDescription() {
                return "Tekst-filer";
            }
        });
Så kan der kun vælges én fil og der vises kun txt-filer...
Avatar billede gonnemand Nybegynder
13. november 2006 - 19:20 #2
Super, men hvordan implementere jeg det lige i min kode?
Avatar billede gonnemand Nybegynder
13. november 2006 - 22:57 #3
Har prøvet lidt af hvert nu, og får bla. følgende fejlmeddelelse:

setFileFilter(javax.swing.filechooser.FileFilter) in javax.swing.JFileChooser cannot be applied to (<anonymous java.io.FileFilter>)

Denne fejl kommer når alt koden som schwarz84 kom med, lige pånær
JFileChooser jFileChooser = new JFileChooser();
som står øverst som instance variabel.
Er ikke sikker på om det er helt korrekt opsat, så lidt hjælp til dette vil være super :-)
Avatar billede gonnemand Nybegynder
13. november 2006 - 23:02 #4
Argh... en edit ville have været på sin plads *gg*

Koden som schwarz84 gav, blev lagt i starten af:
private void openFile()
{

og
JFileChooser jFileChooser = new JFileChooser();
øverst(i klassen) som instance variabel.

Håber det giver mening, og at nogen kan hjælpe mig... (er rimelig nybegynder i java) :-(
Avatar billede schwarz84 Nybegynder
15. november 2006 - 17:54 #5
Du skal importere den rigtige FileFilter. Hvis du har importeret java.io.* skal javax.swing.filechooser.FileFilter importerers explicit.
Avatar billede gonnemand Nybegynder
15. november 2006 - 23:50 #6
Lækkert... det virker nu.... men, nu kan jeg tilgengæld ikke se mapper, hvilket jeg er nød til, for at browse frem til .txt filerne rundt omkring :-)
Avatar billede gonnemand Nybegynder
15. november 2006 - 23:58 #7
Og hvis FileChooseren ("Open vinduet") står på "My Computer" vises harddiskene heller ikke.
Jeg kan så sætte den til "All Files" i "Files of Type:", så kan ALT ses, og alle filer kan åbnes.
Det med at alle filer så alligevel kan åbnes, kan måske ordnes med en if-sætning, men det er vist ikke god kodeskik.... eller hva? *g*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester