Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java] FileNameExtensionFilter

Sujet résolu
    25 février 2007 à 13:49:20

    Hey tout le monde,
    J'essaye d'appliquer un FileNameExtensionFilter sur un JFileChooser comme décrit dans la doc mais j'ai une erreur de compilation et je capte paaas pourquoi :p

    The constructor FileNameExtensionFilter(String, String) is undefined


    import javax.swing.*;
    import java.awt.event.*;
    import javax.swing.filechooser.*;

    public class MyFrame extends JFrame implements ActionListener {

      private JButton myButton;

      public MyFrame() {
        myButton = new JButton();
        this.add(myButton);
        myButton.setText("jButton1");
      }

      public static void main(String args[]) {
        new MyFrame();
      }

      public void actionPerformed(ActionEvent event) {
        if (event.getSource() == myButton) {
          JFileChooser myChooser = new JFileChooser();
          FileFilter myFilter = new FileNameExtensionFilter(
              "Coma Seperated Values (.csv)", "csv");
          myChooser.addChoosableFileFilter(myFilter);
          myChooser.showOpenDialog(this);
        }
      }
    }


    Quelqu'un aurais une idée d'où viens l'erreur ?
    • Partager sur Facebook
    • Partager sur Twitter
      25 février 2007 à 13:59:30

      Tu as bien installé Java 1.6 ? ;)
      • Partager sur Facebook
      • Partager sur Twitter
        25 février 2007 à 14:14:30

        Oui, J'ai un dossier Program Files/Java/jdk1.6.0 et un dossier Program Files/Java/jre1.6.0. (Bizarre d'ailleurs :p )
        Mais est-ce-que Eclipse est au courant ? :o
        De toute manière je ne compte pas trop l'utiliser (il dois surement y avoir des alternative pour les anciennes versions), car j'ai pas envie d'obliger mes utilisateurs à downloader la dernière version ;)
        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2007 à 14:21:55

          Il te faut pourtant 1.6 pour utiliser FileNameExtensionFilter. Donc soit tu trouves un autre moyen de faire, soit tu "forces" les utilisateurs à dl la dernière version.. :)

          Et je doute que Eclipse détecte ton 1.6. Car moi il ne met pas cette erreur.. ;)
          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2007 à 14:40:44

            Pourtant dans Window>Preferences>Java>Installed JREs, j'ai Program Files\Java\jre1.6.0 coché + Dans le package explorer, il y a JRE System Library [jre1.6.0] :(
            Vraiment bizare ce truc ..

            Je déinstalle tout puis je réinstale que le jdk, on verra bien ce que ca donne.
            • Partager sur Facebook
            • Partager sur Twitter
              25 février 2007 à 15:20:26

              J'avais déjà réussi mais je ne sais plus comment :-°
              Je regardais directement si l'extension était correct et si oui, c'était affiché.

              Sinon, regarde la doc pour JFileChooser
              dans la version 1.5.
              (L'exemple du haut).
              • Partager sur Facebook
              • Partager sur Twitter
                25 février 2007 à 17:21:13

                Fonctionne tjs pas après réinstallation .. :(
                Je tente la création d'un FileFilter :p
                • Partager sur Facebook
                • Partager sur Twitter
                  25 février 2007 à 17:47:26

                  J'ai retrouvé le code que j'avais fais pour gerer un JFileChooser pour des fichiers xml. C'est pas vraiment de moi car j'ai adapté mais bon.

                  Le "filter xml"

                  /*
                   * Created on Apr 1, 2006
                   */

                  package versionfinale;

                  import java.io.File;

                  import javax.swing.filechooser.FileFilter;


                  /**
                   * @author kokotchy
                   */

                  public class XmlFilter extends FileFilter {

                      public boolean accept(File f) {
                          if (f.isDirectory()) {
                              return true;
                          }
                          String extension = Utils.getExtension(f);
                          if (extension != null) {
                              if (extension.equals(Utils.xml)) {
                                      return true;
                              } else {
                                  return false;
                              }
                          }
                          return false;
                      }
                     
                      public String getDescription() {
                          return "*.xml files";
                      }
                  }


                  Class Utils qui ne sert qu'a récuperer l'extension

                  /*
                   * Created on Apr 1, 2006
                   */

                  package versionfinale;

                  import java.io.File;

                  /**
                   * @author kokotchy
                   */

                  public class Utils {

                      public final static String xml = "xml";

                      /*
                       * Get the extension of a file.
                       */
                   
                      public static String getExtension(File f) {
                          String ext = null;
                          String s = f.getName();
                          int i = s.lastIndexOf('.');

                          if (i > 0 &&  i < s.length() - 1) {
                              ext = s.substring(i+1).toLowerCase();
                          }
                          return ext;
                      }
                  }


                  La partie qui gere le JFileChooser (c'était un listener sur un bouton).

                  /*
                   * Created on May 14, 2006
                   */

                  package versionfinale;

                  import java.awt.event.ActionEvent;
                  import java.awt.event.ActionListener;
                  import java.io.File;

                  import javax.swing.JFileChooser;
                  import javax.swing.JTextField;
                  import javax.swing.filechooser.FileFilter;

                  /**
                   * @author kokotchy
                   */

                  public class ActionOpen implements ActionListener {

                      public ActionOpen(JTextField text) {
                          this.text = text;
                      }
                     
                          public void actionPerformed(ActionEvent arg0) {
                                  JFileChooser dialogue = new JFileChooser();
                                  FileFilter xmlfilter = (FileFilter)new XmlFilter();
                                  dialogue.setFileFilter(xmlfilter);
                              File fichier = null;
                              if (dialogue.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
                                  fichier = dialogue.getSelectedFile();
                              }
                              text.setText(fichier.getAbsoluteFile().toString());
                          }

                      private JTextField text;
                  }

                  J'espere que c'est plus ou moins clair :-°
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 février 2007 à 18:54:04

                    Super :)

                    En gros, il suffit de créer un classe qui :
                    - extends FileChooser
                    - à les deux méthodes suivantes :
                    --- public boolean accept(File f) : renvoie tru si on est cencé voir le fichier, sinon false.
                    --- public String getDescription() : renvoie la description du filtre.

                    Trop easy en fait :p
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [Java] FileNameExtensionFilter

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown