Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java] Problème avec swing

un JFileChooser en double

Sujet résolu
    7 mars 2007 à 20:56:17

    Bonjour tout le monde,

    Voilà mon problème, je crée un JFileChooser en swing à partir d'un bouton "parcourir"... Jusque là tout va bien. Lorsque je clique sur le bouton sus-nommé il m'ouvre bien un JFileChooser SAUF que :

    • Il ne m'affiche pas le filtre fichier xml que j'ai mis en place
    • et que lorsque je ferme la fenêtre JFileChooser il m'en ouvre une autre... avec les propriétés qu'il faut cette fois...


    Voici mon code :


    public class ImportXML extends JPanel{
           
            private JLabel jLabel = null;
            private JTextField jTextField = null;
            private JButton jButton = null;
            private JFileChooser jFileChooser = null;
           
            public ImportXML(){
                    super();
                    this.add(getJLabel());
                    this.add(getJTextField());
                    this.add(getJButton());
            }
           
            private JLabel getJLabel() {
                    if (jLabel == null) {
                            jLabel = new JLabel("Choisissez un fichier XML :");
                    }
                    return jLabel;
            }
           
            public JTextField getJTextField(){
                    if(jTextField == null){
                            jTextField = new JTextField(12);
                    }
                    return jTextField;
            }
           
            private JButton getJButton() {
                    if (jButton == null) {
                            jButton = new JButton("Parcourir...");
                            jButton.addActionListener(new java.awt.event.ActionListener() {
                                    public void actionPerformed(java.awt.event.ActionEvent e) {
                                            JFrame jFrame = new JFrame();
                                            //jFrame.add(new ChoixFichier(jFrame));
                                            jFrame.add(getJFileChooser());
                                            jFrame.pack();
                                            jFrame.setResizable(false);
                                            jFrame.setVisible(true);
                                    }
                            });
                    }
                    return jButton;
            }
           
            private JFileChooser getJFileChooser(){
                    if(jFileChooser == null){
                            this.jFileChooser = new JFileChooser();
                            this.jFileChooser.setDialogType(JFileChooser.CUSTOM_DIALOG);
                            int returnVal = this.jFileChooser.showDialog(this,"Choisir");
                            if(returnVal==JFileChooser.APPROVE_OPTION) this.jFileChooser.getSelectedFile();
                            this.jFileChooser.addChoosableFileFilter(new 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 "Fichiers XML";
                                    }
                            }
                            );
                    }
                    return jFileChooser;
            }
    }



    merci de votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      8 mars 2007 à 1:09:23

      c'est assez simple, en fait :

      tu prend ça :

      int returnVal = this.jFileChooser.showDialog(this,"Choisir");
      if(returnVal==JFileChooser.APPROVE_OPTION)
      this.jFileChooser.getSelectedFile();


      tu le met APRÈS :


      this.jFileChooser.addChoosableFileFilter(new FileFilter(){ ....... };
                             


      bref :

      private JFileChooser getJFileChooser(){
                      if(jFileChooser == null){
                              this.jFileChooser = new JFileChooser();
                              this.jFileChooser.setDialogType(JFileChooser.CUSTOM_DIALOG);
                              this.jFileChooser.addChoosableFileFilter(new 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 "Fichiers XML";
                                      }
                              }
                              );
                       int returnVal = this.jFileChooser.showDialog(this,"Choisir");
                              if(returnVal==JFileChooser.APPROVE_OPTION) this.jFileChooser.getSelectedFile();
                      }
                      return jFileChooser;
              }


      ;);)


      EDIT: et peux tu me dire l'utilité de ce code-ci?

      if(returnVal==JFileChooser.APPROVE_OPTION)
      this.jFileChooser.getSelectedFile();
      • Partager sur Facebook
      • Partager sur Twitter
      Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
        8 mars 2007 à 8:57:26

        OK merci, c'est mieux effectivement, mais il m'affiche toujours deux fois le JFileChooser au premier lancement.

        Je me demande en fait si dans

        this.jFileChooser.showDialog(this,"Choisir");


        je passe le bon argument à savoir "this" et s'il ne faudrait pas que je passe la fenetre principale !! La racine de l'arbre des widgets quoi !

        Merci

        PS : pour l'instant ce code ne sert à rien... mais je vais rajouter des trucs quand j'aurai trouvé la solution à mon problème.

        if(returnVal==JFileChooser.APPROVE_OPTION){
            this.jFileChooser.getSelectedFile()
        }

        • Partager sur Facebook
        • Partager sur Twitter
          8 mars 2007 à 15:11:17

          [édité]

          EDIT: ohh je viens de voir l'erreur (possible)...

          tu m'enlève ça :

          JFrame jFrame = new JFrame();
          //jFrame.add(new ChoixFichier(jFrame));
          jFrame.add(getJFileChooser());
          jFrame.pack();
          jFrame.setResizable(false);
          jFrame.setVisible(true);

          et tu le remplace par :

          String fichier = getJFileChooser();

          enfin, dans getJFileChooser(), tu lui fait retourner un String, et :

          if(returnVal==JFileChooser.APPROVE_OPTION)
              return this.jFileChooser.getSelectedFile();
          else return "annulé";
          • Partager sur Facebook
          • Partager sur Twitter
          Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
            8 mars 2007 à 16:40:38

            OK Merci ça marche nikel :D !! T'es un boss ;)

            Salut et merci encore !

            • Partager sur Facebook
            • Partager sur Twitter

            [Java] Problème avec swing

            × 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