web-dev-qa-db-fra.com

Sélection de la destination des dossiers en Java?

Je suis un débutant à Java. J'essaie de choisir dynamiquement l'emplacement du fichier pour enregistrer le résultat de mon projet (à lancer au tout début de mon projet). J'ai travaillé avec quelques exemples FileDialog, mais chacun d'eux me permet de choisir un fichier et non un dossier.

Quelqu'un peut-il m'aider s'il vous plaît avec un exemple (ou) un lien vers un pour le même?

36
Sam

Vous pouvez essayer quelque chose comme ça (comme indiqué ici: Sélectionnez un répertoire avec un JFileChooser ):

import javax.swing.*;
import Java.awt.event.*;
import Java.awt.*;
import Java.util.*;


public class DemoJFileChooser extends JPanel
   implements ActionListener {
   JButton go;

   JFileChooser chooser;
   String choosertitle;

  public DemoJFileChooser() {
    go = new JButton("Do it");
    go.addActionListener(this);
    add(go);
   }

  public void actionPerformed(ActionEvent e) {            
    chooser = new JFileChooser(); 
    chooser.setCurrentDirectory(new Java.io.File("."));
    chooser.setDialogTitle(choosertitle);
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    //
    // disable the "All files" option.
    //
    chooser.setAcceptAllFileFilterUsed(false);
    //    
    if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { 
      System.out.println("getCurrentDirectory(): " 
         +  chooser.getCurrentDirectory());
      System.out.println("getSelectedFile() : " 
         +  chooser.getSelectedFile());
      }
    else {
      System.out.println("No Selection ");
      }
     }

  public Dimension getPreferredSize(){
    return new Dimension(200, 200);
    }

  public static void main(String s[]) {
    JFrame frame = new JFrame("");
    DemoJFileChooser panel = new DemoJFileChooser();
    frame.addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
          }
        }
      );
    frame.getContentPane().add(panel,"Center");
    frame.setSize(panel.getPreferredSize());
    frame.setVisible(true);
    }
}
65
npinti

Oracles Java Tutoriel pour les sélecteurs de fichiers: http://docs.Oracle.com/javase/tutorial/uiswing/components/filechooser.html

Remarque getSelectedFile() renvoie le dossier sélectionné, malgré son nom. getCurrentDirectory() renvoie le répertoire du dossier sélectionné.

import javax.swing.*;

public class Example
{
    public static void main(String[] args)
    {
        JFileChooser f = new JFileChooser();
        f.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
        f.showSaveDialog(null);

        System.out.println(f.getCurrentDirectory());
        System.out.println(f.getSelectedFile());
    }      
}
27
jmw

essayez quelque chose comme ça

JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new Java.io.File("."));
chooser.setDialogTitle("select folder");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setAcceptAllFileFilterUsed(false);
13
Nagaraju Badaeni

J'ai trouvé un bon exemple de ce dont vous avez besoin dans ce lien .

import javax.swing.JFileChooser;

public class Main {
  public static void main(String s[]) {
    JFileChooser chooser = new JFileChooser();
    chooser.setCurrentDirectory(new Java.io.File("."));
    chooser.setDialogTitle("choosertitle");
    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    chooser.setAcceptAllFileFilterUsed(false);

    if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
      System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory());
      System.out.println("getSelectedFile() : " + chooser.getSelectedFile());
    } else {
      System.out.println("No Selection ");
    }
  }
}
1
Matias Dominguez

Avec JFileChooser est possible utiliser ceci:

UIManager.setLookAndFeel("com.Sun.Java.swing.plaf.windows.WindowsLookAndFeel");

pour avoir un look and feel comme Windows.

pour les autres paramètres, voir ici: https://docs.Oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html#available

1
Alessandro Forcuti