2010-05-26 16 views
7

Je suis configuré pour créer un explorateur de fichiers utilisant Java. Le but est d'émuler le comportement de l'explorateur par défaut aussi étroitement que possible, quel que soit le système d'exploitation sous-jacent.Explorateur de fichiers utilisant Java - comment s'y prendre?

Je n'ai fait aucune programmation GUI en Java.

J'ai regardé-up Swing, SWT et JFace, et je commence mon projet avec ce tutoriel: http://www.ibm.com/developerworks/opensource/library/os-ecgui1/

Je voudrais connaître vos opinions sur la meilleure approche pour résoudre ce problème. Si vous pouviez commenter la complexité du codage, la portabilité, l'indépendance du système d'exploitation et l'efficacité, ce serait formidable.

Y a-t-il autre chose que je devrais savoir? Y a-t-il d'autres moyens?

Merci beaucoup!


Merci pour les réponses et les réponses.

On dirait que je vais choisir Swing pour implémenter l'explorateur de fichiers. Ce qui me donne la chair de poule, c'est la pensée qu'il n'y aurait rien pour imiter l'affichage de l'explorateur par défaut ... Pourriez-vous s'il vous plaît fournir quelques pointeurs à ce sujet? Est-ce que je reçois une liste de fichiers, obtiens des icônes et les arrange ensuite en grille sur l'écran pour montrer la vue par défaut de l'explorateur?

+0

Est-ce que "explorateur par défaut" fait ici référence à la valeur par défaut du gestionnaire de plate-forme/fenêtre? Car cela signifie que vous devez détecter ces éléments et utiliser une implémentation différente pour différentes plates-formes. Je commencerais par googler si quelqu'un a déjà fait quelque chose comme ça. – fish

+0

oui, je veux dire exactement par explorateur par défaut. J'ai googlé; il est facile de trouver le code de structure de l'arborescence du répertoire, mais la fenêtre de l'explorateur avec les icônes disposées en mode grille, pas de chance jusqu'à présent. : - | – Chaitanya

+0

Ciblé sur http://groups.google.com/group/comp.lang.java.gui/browse_frm/thread/88c34511a58a4cbe – trashgod

Répondre

6

Vous feriez mieux d'utiliser Swing. Vous avez besoin de différentes versions de SWT et JFace pour différents systèmes d'exploitation.

La meilleure approche est de commencer simple, et d'ajouter à ce que vous avez à mesure que vous en apprendre davantage.

Pour commencer, vous avez besoin d'un JFrame avec deux enfants JPanel.

Vous devez ajouter un JMenuBar au JFrame. Les éléments JMenu sont ajoutés au JMenuBar. Les éléments JMenuItem sont ajoutés au JMenu.

Oracle Swing Overview vous aidera à ajouter plus de composants Swing à votre projet.

+3

+1 pour la portabilité multiplateforme et le raffinement progressif. – trashgod

+0

Pardonnez-moi si je me trompe, mais je ne pouvais voir que JFileChooser dans Swing, et il peut afficher la boîte de dialogue ouvrir/enregistrer; mais je veux quelque chose de similaire à un explorateur de fichiers. Jusqu'à présent, je n'ai pas été en mesure de le faire en utilisant JFileChooser. – Chaitanya

+1

@ user299988: Vous allez devoir construire un explorateur de fichiers à partir de nombreux composants Swing. Je vous ai donné une liste de composants pour commencer dans ma réponse. –

4

Je commencerais avec How to Use File Choosers, mais l'exemple dans org.netbeans.swing.outline.Outline, discuté here, est attrayant.

Addendum: @Gillbert Le Blanc soulève un excellent point sur la facilité & la portabilité de Swing. En revanche, SWT nécessite un peu plus d'efforts de déploiement, mais certains utilisateurs préfèrent la plus grande fidélité de org.eclipse.swt.widgets.FileDialog, comme indiqué here.

Addendum: Je remarque que FileDialog affiche une fenêtre plus native, comme vu here. Vous pouvez l'essayer sur votre plate-forme (s) cible.

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

/** @see https://stackoverflow.com/questions/2914733 */ 
public class FileDialogTest { 

    public static void main(String[] args) { 
     final JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLayout(new GridLayout(0, 1)); 
     frame.add(new JButton(new AbstractAction("Load") { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       FileDialog fd = new FileDialog(frame, "Test", FileDialog.LOAD); 
       fd.setVisible(true); 
       System.out.println(fd.getFile()); 
      } 
     })); 
     frame.add(new JButton(new AbstractAction("Save") { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       FileDialog fd = new FileDialog(frame, "Test", FileDialog.SAVE); 
       fd.setVisible(true); 
       System.out.println(fd.getFile()); 
      } 
     })); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 
+0

Désolé pour le lien incorrect. – trashgod

+0

J'ai ajouté un exemple en utilisant 'java.awt.FileDialog', ce qui peut mieux convenir à vos besoins. – trashgod