2011-08-26 16 views
17

Creé una interfaz y me gustaría agregar una función que permita al usuario abrir un archivo. Estoy usando AWT. No entiendo cómo usar FileDialog. ¿Puedes darme un ejemplo o un buen enlace que explique esto?¿Cómo usar FileDialog?

+1

Véase también [ 'FileDialogTest'] (http://stackoverflow.com/questions/2914627/file-explorer-using-java-how-to-go-about-it/2914733#2914733). – trashgod

Respuesta

3

Hay algunos ejemplos de código here que demuestran cómo usarlo para varias tareas diferentes.

Dicho esto, es posible que desee dar un paso atrás y comprobar si AWT es la mejor tarea para el trabajo aquí. Hay razones válidas para usarlo en algo como swing/swt, por supuesto, pero si recién estás empezando, entonces Swing, IMO sería una mejor opción (hay más componentes, más tutoriales y es una biblioteca más ampliamente solicitada para trabajar con en estos días.)

+1

Los tres de los ejemplos de código que ese enlace lleva al son exactamente los mismos ... (sólo decir, si se ven similares, no estás loca ...) – ArtOfWarfare

26

Un ejemplo de código completo, con filtrado de archivos:

FileDialog fd = new FileDialog(yourJFrame, "Choose a file", FileDialog.LOAD); 
fd.setDirectory("C:\\"); 
fd.setFile("*.xml"); 
fd.setVisible(true); 
String filename = fd.getFile(); 
if (filename == null) 
    System.out.println("You cancelled the choice"); 
else 
    System.out.println("You chose " + filename); 
+1

esto ayudó mucho, es mucho más rápido que un 'JFileChooser' , lástima que no maneja bien las excepciones, ese bit 'nulo' me estaba molestando. – iKlsR

7

para añadir a la respuesta por @TheBronx - para mí, fd.setFile("*.txt"); no funciona en OS X. Esto funciona:

fd.setFilenameFilter(new FilenameFilter() { 
    @Override 
    public boolean accept(File dir, String name) { 
     return name.endsWith(".txt"); 
    } 
}); 

O como una fantasía de Java 8 lambda:

fd.setFilenameFilter((dir, name) -> name.endsWith(".txt")); 
+1

No funciona en Ubuntu también. Esto lo arregla –

+1

Gran solución, pero no funcionará en Windows. https://docs.oracle.com/javase/7/docs/api/java/awt/FileDialog.html#setFilenameFilter%28java.io.FilenameFilter%29 –

+1

@KenoClayton verdadera. Creo que la solución multiplataforma es usar tanto 'setFile' como' setFilenameFilter'. –