JFileChooser es un componente JAVA, que nos permite selecionar y/o grabar cualquier archivo basicamente dentro de nuestro ordenador, en este oportunidad fijaremos la antencion en la funcion de “Seleccion o Abrir”
El ejemplo demostracion trata sobre: “Selecionar un archivo imagen (.jpg, .gif, .png) y luego tendremos q visualizar dicha imagen” aqui la ventana ilustrativa.
Lo Primero q tendremos q hacer es dibujar nuestra interface grafica de usuario(GUI) en este caso “WindowDemoFile”, lo unico nuevo en esta clase es el “JFileChooser”
public JFileChooser jfcExaminarEntrada; jfcExaminarEntrada = new JFileChooser();
Esta demas decir q la imagen se visualizara dentro de un “JDesktopPane”, aqui en fuente:
import javax.swing.*;
public class WindowDemoFile extends JFrame {
public WindowDemoFile() {
initComponents(); }
private void initComponents() {
setTitle("DEMO POR INFORUX");
setResizable(false);
jfcExaminarEntrada = new JFileChooser();
jPanel1 = new JPanel();
jtfRutaEntrada = new JTextField();
jbExaminar = new JButton();
jbLoad = new JButton();
jPanel3 = new JPanel();
jDesktopPane1 = new JDesktopPane();
setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(null);
jPanel1.setBorder( BorderFactory.createTitledBorder("Ubica el Archivo Imagen"));
jPanel1.setLayout(null);
jPanel1.add(jtfRutaEntrada);
jtfRutaEntrada.setBounds(20, 30, 350, 19);
jbExaminar.setText("...");
jPanel1.add(jbExaminar);
jbExaminar.setBounds(400, 30, 50, 25);
jbLoad.setText("load");
jPanel1.add(jbLoad);
jbLoad.setBounds(460, 30, 70, 25);
getContentPane().add(jPanel1);
jPanel1.setBounds(30, 30, 550, 70);
jPanel3.setBorder( BorderFactory.createTitledBorder("Imagen Cargada"));
jPanel3.setLayout(null);
jPanel3.add(jDesktopPane1);
jDesktopPane1.setBounds(20, 30, 530, 340);
getContentPane().add(jPanel3);
jPanel3.setBounds(20, 110, 570, 390);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-618)/2, (screenSize.height-542)/2, 618, 542);
/*declaramos una referencia a nuestra clase control de eventos*/
ControlaEventos controlaEventos =new ControlaEventos (this);
jbExaminar.addActionListener(controlaEventos);
jbLoad.addActionListener(controlaEventos);
}
public static void main(String args[]) {
new WindowDemoFile().setVisible(true); }
public JFileChooser jfcExaminarEntrada;
public JButton jbExaminar;
public JButton jbLoad;
public JDesktopPane jDesktopPane1;
public JPanel jPanel1;
public JPanel jPanel3;
public JTextField jtfRutaEntrada;
}
La segunda clase es de nombre “ControlaEventos”, su mismo nombre lo dice, controla todos los eventos producidos por el usuario. solo controlaremos los 2 botones con nombres q muestran “…” y “load”.
La novedad de esto, es q al producirse el evento en el boton q llama al “JFileChoose”. este mostrara un dialogo y dentro de el, estara el componente. Para decirle cual de lo 2 tipos (open y/o save), utilizamos los metodos showOpenDialog o showSaveDialog, segun nuestras necesidades.
int result = d.showOpenDialog(ventana para seleccionar un archivo); int result =d.showSaveDialog(ventana para guardar un archivo);
donde “d” es el frame, internalFrame, mejro dicho es la ventana donde se sobrepondra, ademas esta llamada no entrega nada hasta que el usuario ha aceptado un archivo o cancelado la entrada de ldialogo. El valor de retorno es:
JFileChooser.APROVE_OPTION (si haces click en entrar o gravar)
JFileChooser.CANCEL_OPTION. ( si hay evento en el boton cancelar del JFileChooser.)
Aqui el fuente:
import java.awt.event.*;
import java.io.File;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class ControlaEventos implements ActionListener{
WindowDemoFile ventana;
File fileImagen;
public ControlaEventos(WindowDemoFile objeto){
ventana = objeto;
}
public void actionPerformed(ActionEvent evento)
{
if (evento.getSource()==ventana.jbExaminar){//si hay evento en el boton examinar
int returnVal = ventana.jfcExaminarEntrada.showOpenDialog(ventana);//mostramos el jFileChooser
if (returnVal == ventana.jfcExaminarEntrada.APPROVE_OPTION) {//nos aseguramos q haya selecionado algun archivo
fileImagen = ventana.jfcExaminarEntrada.getSelectedFile();//obtenemos el archivo selecionado
ventana.jtfRutaEntrada.setText(fileImagen.toString()); }}//mostramos la ruta del archivo en la caja de texto
if (evento.getSource()==ventana.jbLoad){//si hay evento en el boton load
if ( fileImagen != null) {
cargarImagen(ventana.jDesktopPane1,fileImagen);}}
}
/*este metodo recibe el jdeskopPane y el archivo imagen*/
public void cargarImagen(javax.swing.JDesktopPane jDeskp,File fileImagen)
{
try{
BufferedImage image = ImageIO.read(fileImagen);
jDeskp.setBorder(new PintaImagen(image)); }
catch (Exception e){ System.out.println("No cargo imagen, sorry"); }
}
}
La ultima clase, es la misma a la entrada anterior, ahy se explica la clase “PintaImagen”
de todas formas aqui el fuente:
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.image.BufferedImage;
import javax.swing.border.Border;
public class PintaImagen implements Border{
private BufferedImage image ;
public PintaImagen(BufferedImage image ) {
this.image=image;}
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
int x0 = x+ (width-image.getWidth())/2;
int y0 = y+ (height-image.getHeight())/2;
g.drawImage(image,x0,y0,null); }
public Insets getBorderInsets(Component c) {
return new Insets(0,0,0,0);}
public boolean isBorderOpaque() {
return true; }
}
Atravez de esta clase convertirlos el “File” a una imagen para pintarse en un JDesktopPane.
Aqui el pantallazo
Como ven. no es complicado mostrar un jFileChooser, solo una simple linea lo haces
Saludos!




Hola
Excelente!!!, necesitaba una guía como esta. Muchas Gracias.
nota: falta cerrar la clase WindowDemoFile. falta un corchete }.
pues aun estoy analizando el codigo, pero me sera de mucha ayuda!!!
era justo lo que necesitaba… una guia en el camino.
MIL GRACIAS POR EL TIP ME SIRVIO DE MUCHO…. SOLO TOME LO NECESARIO DE ACUERDO A MI PROYECTO… SI LOGRE MOSTRAR EL CHOOSER….
« ß ~ A ~ L ~ A ~ M »
De nada amigo
muy buen manual, es exelente, ojala y los demas que existenen en la red fueran tan faciles de entender como esta, gracias
Gracias, me ha sido muy útil, yo lo intenté anteriormente pero no me salía.
hola muchas garcias por las yudan k nos dan aun que la verdad me gustaria ese mismo ejemplo pero en lugar de mostrar imagen mostrara el contenido de una rchivo de texto y que cuente caracteres y palabras, saltos de linea, espacios en blanco y sobre todos llaves corchetes.
gracias espero que me puedan ayudar :S
se los agradesco
mil gracias esto me sevira de mucha ayuda gracias:
te hago una pregunta… se puede con el FileChooser abrir el archivo pero en su programa por defecto.. es decir, necesito que desde el filechooser pueda hacerle dobleclick o algo a un archivo de word y que se abra el archivo pero desde el word… vi soluciones por ahí que no me sirven ya que implican que se expecifique el programa con el que debe abrirse el arcivo y no me sirve así… espero tu respuesta.. gracias…
QUISIERA SABER COMO PODRIA HACER UN PROGRAMA CON NETBEANS 6.7.1 QUE LEA ARCHIVOS .TXT Y QUE CUENTE LOS CARACTERES QUE TIENE ME PODRIAS AYUDAR
Facil de entender para alguien que empieza en esto de Java
Gracias
Saludos
Buena man!
grax por tu codigo, oye pero yo necesito guardar una imagen k tengo en una ruta dentro de un string , guardarla en otra ruta k seleccionaria con el JFileChooser pero la verdad no entiendo mucho
me podrias ayudar por favor???
Gracias man es justo lo que me hacia falta