martes, 3 de enero de 2012

Uso del JFileChooser de Java

JFileChooser es una clase que pertenece a la librería javax.swing y que nos sirve para mostrar una ventana en la que se piden explorar los directorios del PC con el fin de guardar o abrir un archivo, así como seleccionar una ruta, y ese tipo de cosas. Hoy veremos su uso y pues vamos a ello.

Evidentemente lo primero es importar las librerías que se van a usar la cual es javax.swing.JFileChooser; ahora creamos el objeto, en lo personal yo hago los objetos por clases heredadas, pero en estos ejemplos lo manejaremos normalmente, haciendo uso del objeto en si. Teniendo el objeto se le pueden "setear" ciertos parámetros (no obligatorios) por ejemplo agregaremos un filtro para que vea solo ciertas extensiones (.doc y .docx) y le definiremos el titulo que llevara la ventana.
//se crea el objeto, que en sí es el explorador
//se le puede pasar una ruta por defecto o no le podemos pasar nada par aque inicie en "Equipo"
JFileChooser explorador = new JFileChooser("\home\");

//Le cambiamos el titulo
explorador.setDialogTitle("Abrir documento...");

//Agregamos un filtro de extensiones
explorador.setFileFilter(new FileNameExtensionFilter("Doc - MS-Office 2003", "doc"));
explorador.setFileFilter(new FileNameExtensionFilter("Docx - MS-Office 2007", "docx"));

Ahora mostraremos en si el explorador con la instrucción .showDialog(parent, text); que recibe un parent esto es un Frame, una ventana pues, me parece que puede ser nulo, y así es como o haré en el ejemplo lo ideal seria que le pases el frame de tu aplicación que lo mandó abrir, el segundo parámetro recibe un texto que sera colocado en el botón que hace la función de abrir, debe ser una String obviamente, este devuelve un entero (int) que indica que botón se ha presionado, a continuación capturaremos el entero en una variable y preguntaremos que acción se solicito mediante un switch.

//Muestro un dialogo sin pasarle parent con el boton de abrir
int seleccion = explorador.showDialog(null, "Abrir!");
  
//analizamos la respuesta
switch(seleccion) {
case JFileChooser.APPROVE_OPTION:
 //seleccionó abrir
 break;

case JFileChooser.CANCEL_OPTION:
 //dio click en cancelar o cerro la ventana
 break;

case JFileChooser.ERROR_OPTION:
 //llega aqui si sucede un error
 break;
}
Ya cada quien decide que hacer en cada situación, por ejemplo lo que podríamos hacer es guardar una ruta, o obtener un fichero y crear un File, o lo que sea que necesitemos hacer.

//Podemos crear un File con lo seleccionado
File archivo = explorador.getSelectedFile();

//y guardar una ruta
String ruta = archivo.getPath();
Y pues hay esta lo básico de este componente, cabe aclarar que hay métodos ya definidos como para abrir un fichero y como para guardar, sea el caso se usara uno u otro al mostrar el explorador, éstos solo reciben como parámetro el parent (componente, ventana, etc) que creo que puede ser null, no se hagan pruebas.

//para abrir
int seleccion = explorador.showOpenDialog(parent);

//para guardar
int seleccion = explorador.showSaveDialog(parent);
Saludos!

6 comentarios:

  1. Le agregas el codigo en un action performed o en que

    ResponderEliminar
  2. Parent me dice que es para paquetes externos que hago

    ResponderEliminar
  3. Esta linea: "int seleccion = explorador.showDialog(null, "Abrir!");" es la que muestra el dialog, asi que esa en particular si debes colocarla en el listener de un boton, pero claro el FileChooser debe estar ya como variable de instancia. El primer valor puedes dejarlo en null, si no, debes colocar el nombre de tu JFrame o JDialog o Window a la que pertenece ese FileChooser.

    ResponderEliminar
  4. Hola como le puedo hacer para obtener la ruta d una carpeta y ponerla en un textfiel espero su ayuda graxias

    ResponderEliminar
    Respuestas
    1. Para obtener la ruta de una carpeta igual la pides como si fuera un File, ya que en Java 6 los archivos y las carpetas son manipuladas por la misma clase File, lo unico que tendras que hacer, es .getPath() par aobtener la ruta hasta la carpeta. Ponerla en el Textfield pue sya has de saber .setText("la ruta")

      Eliminar
    2. Como insertas la ruta a base de datos ? porque a mi me envia la ruta sin las diagonales

      Eliminar

Deja un comentario! =)