Avatar billede lirekassemanden Nybegynder
07. december 2003 - 16:46 Der er 11 kommentarer og
1 løsning

.wav i JFileChooser

Nu har jeg læst docs og søgt i div. fora. Men jeg har stadig ikke fundet et svar på hvordan man lavet et simpelt filter til en JFileChooser. Jeg skal bruge et filter sådan at det kun er .wav filer der vises (og self dirs)

Kan det laves simpelt?
Avatar billede arne_v Ekspert
07. december 2003 - 16:54 #1
Java SDK API docs indeholder:

JFileChooser chooser = new JFileChooser();
    // Note: source for ExampleFileFilter can be found in FileChooserDemo,
    // under the demo/jfc directory in the Java 2 SDK, Standard Edition.
    ExampleFileFilter filter = new ExampleFileFilter();
    filter.addExtension("jpg");
    filter.addExtension("gif");
    filter.setDescription("JPG & GIF Images");
    chooser.setFileFilter(filter);
    int returnVal = chooser.showOpenDialog(parent);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
      System.out.println("You chose to open this file: " +
            chooser.getSelectedFile().getName());
    }

kan du ikke få det til at virke ?
Avatar billede arne_v Ekspert
07. december 2003 - 17:02 #2
Ellers et ganske simpelt filter som dette:

import java.io.File;

import javax.swing.filechooser.FileFilter;

public class WawFilter extends FileFilter {
    public boolean accept(File f) {
        String name = f.getName().toUpperCase();
        if(f.isDirectory() || name.substring(name.length()-4).equals(".WAW")) {
            return true;
        } else {
            return false;
        }
    }
    public String getDescription() {
        return "waw files";
    }
}
Avatar billede lirekassemanden Nybegynder
07. december 2003 - 17:04 #3
Den øverste har jeg prøvet. Men hvad er "ExampleFileFilter"??
Avatar billede lirekassemanden Nybegynder
07. december 2003 - 17:06 #4
Hvordan implementeres det andet eksempel?
Min JFileChooser ser sådan ud:
      int returnVal = fc.showOpenDialog(this);
      if (returnVal == JFileChooser.APPROVE_OPTION)
      {
        playOpen.setEnabled(true);
        loopOpen.setEnabled(true);
        playa.setFil(fc.getSelectedFile().getPath());
      }
Avatar billede arne_v Ekspert
07. december 2003 - 17:09 #5
// Note: source for ExampleFileFilter can be found in FileChooserDemo,
// under the demo/jfc directory in the Java 2 SDK, Standard Edition.
Avatar billede arne_v Ekspert
07. december 2003 - 17:09 #6
chooser.setFileFilter(new WawFilter());
Avatar billede lirekassemanden Nybegynder
07. december 2003 - 17:12 #7
hmm..
Det virker fint - men hver gang jeg forsøger at få et niveau op kommer denne fejl:

java.lang.StringIndexOutOfBoundsException: String index out of range: -3

    at java.lang.String.substring(String.java:1474)

    at java.lang.String.substring(String.java:1447)

    at Playa.WavFilter.accept(WavFilter.java:12)

    at javax.swing.JFileChooser.accept(JFileChooser.java:1535)

    at javax.swing.plaf.basic.BasicDirectoryModel$LoadFilesThread.run(BasicDirectoryModel.java:204)
Avatar billede arne_v Ekspert
07. december 2003 - 17:23 #8
Det lyder som substring(name.length()-4) ikke har det så godt med "." og "..".

Jeg synes dog bare ikke at den burde bliver kaldt, fordi isDirectory står først.
Avatar billede arne_v Ekspert
07. december 2003 - 17:32 #9
Vrøvl der kan naturligvis også godt være andre filnavne som er
kortere end 4 tegn.

import java.io.File;

import javax.swing.filechooser.FileFilter;

public class WawFilter extends FileFilter {
    public boolean accept(File f) {
        String name = f.getName().toUpperCase();
        if(f.isDirectory() ||
          (name.length() >= 4 && name.substring(name.length()-4).equals(".WAW"))) {
            return true;
        } else {
            return false;
        }
    }
    public String getDescription() {
        return "waw files";
    }
}
Avatar billede arne_v Ekspert
07. december 2003 - 17:32 #10
OK ?
Avatar billede lirekassemanden Nybegynder
07. december 2003 - 17:33 #11
hmm.. ja.
Avatar billede lirekassemanden Nybegynder
07. december 2003 - 17:35 #12
jep--
nu virker det..
jeg takker endnu en gang
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