2010-05-26 21 views
7

Estoy configurado para crear un explorador de archivos usando Java. El objetivo es emular el comportamiento del explorador predeterminado lo más cerca posible, cualquiera que sea el sistema operativo subyacente.Explorador de archivos usando Java: ¿cómo hacerlo?

No he hecho ninguna programación GUI en Java.

He mirado en marcha Swing, SWT y JFace, y estoy empezando mi proyecto con este tutorial: http://www.ibm.com/developerworks/opensource/library/os-ecgui1/

me gustaría saber sus opiniones sobre el mejor enfoque para abordar este problema. Si pudiera comentar sobre la complejidad de la codificación, la portabilidad y la independencia del sistema operativo, y la eficiencia, sería genial.

¿Hay algo más que deba saber? ¿Existen otras formas?

¡Muchas gracias!


Gracias por las respuestas y las respuestas.

Parece que elegiré Swing para implementar el explorador de archivos. Lo que me da escalofríos es la idea de que no habría nada que imite la vista predeterminada del explorador ... ¿Podrían darnos algunos consejos al respecto? ¿Obtengo una lista de archivos, obtengo íconos y luego los organizo en una cuadrícula en la pantalla para mostrar la vista predeterminada del explorador?

+0

¿El "explorador predeterminado" aquí se refiere a la configuración predeterminada de la plataforma/administrador de ventanas? Porque eso significaría que necesita detectar estas cosas y usar una implementación diferente para diferentes plataformas. Comenzaré buscando en Google si alguien ya ha hecho algo como esto. – fish

+0

sí, me refiero exactamente a eso por defecto explorador. He buscado en Google; es fácil encontrar el código de la estructura del árbol del directorio, pero la ventana del explorador con los íconos colocados en forma cuadriculada, sin suerte hasta el momento. : - | – Chaitanya

+0

Publicación cruzada en http://groups.google.com/group/comp.lang.java.gui/browse_frm/thread/88c34511a58a4cbe – trashgod

Respuesta

6

Será mejor que utilice Swing. Necesita diferentes versiones de SWT y JFace para diferentes sistemas operativos.

El mejor enfoque es comenzar de manera simple y agregar lo que tiene a medida que aprende más.

Para comenzar, necesita un JFrame con dos hijos de JPanel.

Deberá agregar una JMenuBar al JFrame. Los elementos de JMenu se agregan a JMenuBar. Los elementos de JMenuItem se agregan al JMenu.

Oracle Swing Overview le ayudará a agregar más componentes Swing a su proyecto.

+3

+1 para portabilidad multiplataforma y refinamiento paso a paso. – trashgod

+0

Disculpe si estoy equivocado, pero solo pude ver JFileChooser en Swing, y puede mostrar el cuadro de diálogo abrir/guardar; pero quiero algo similar a un explorador de archivos. Hasta ahora, no he podido ver una forma de hacerlo usando JFileChooser. – Chaitanya

+1

@ user299988: Tendrás que crear un explorador de archivos a partir de muchos componentes de Swing. Le di una lista de componentes para comenzar en mi respuesta. –

4

Comenzaría con How to Use File Choosers, pero el ejemplo en org.netbeans.swing.outline.Outline, discutido here, es atractivo.

Adición: @Gilbert Le Blanc plantea un excelente punto acerca de la facilidad & portabilidad de Swing. Por el contrario, SWT requiere un poco más de esfuerzo para implementar, pero algunos usuarios prefieren la mayor fidelidad de org.eclipse.swt.widgets.FileDialog, como se muestra en here.

Adición: Noté que FileDialog muestra una ventana más nativa, como se ve here. Puede intentarlo en su (s) plataforma (s) de destino.

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

Disculpa el enlace incorrecto. – trashgod

+0

He agregado un ejemplo usando 'java.awt.FileDialog', que puede adaptarse mejor a sus necesidades. – trashgod

Cuestiones relacionadas