Aprendiendo con JFileChooser … Parte 1

6 08 2008

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!


Acciones

Information

39 responses

22 08 2008
Rasputin

Hola

Excelente!!!, necesitaba una guía como esta. Muchas Gracias.

nota: falta cerrar la clase WindowDemoFile. falta un corchete }.

27 10 2008
balam

pues aun estoy analizando el codigo, pero me sera de mucha ayuda!!!

era justo lo que necesitaba… una guia en el camino.

29 10 2008
balam

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 »

30 10 2008
inforux

De nada amigo

6 11 2008
rolix

muy buen manual, es exelente, ojala y los demas que existenen en la red fueran tan faciles de entender como esta, gracias

27 02 2009
Borja

Gracias, me ha sido muy útil, yo lo intenté anteriormente pero no me salía.

5 03 2009
roberto

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

14 04 2009
juan david

mil gracias esto me sevira de mucha ayuda gracias:

21 04 2009
gonza

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…

7 08 2009
oseas

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

25 09 2009
Luisao

Facil de entender para alguien que empieza en esto de Java

Gracias

Saludos

23 10 2009
Pablo

Buena man!

3 11 2009
PALADINJP

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???

4 11 2009
Micky

Gracias man es justo lo que me hacia falta

9 12 2009
PiMp

Muchas gracias por explicar todo esto, me sirvió enormemente.

31 07 2010
Theridon

Muchas gracias de verdad, mejor explicado imposible, y el código esta bien documentado y se entiende perfectamente. Muy util

2 09 2010
Syl

Excelente Man me sirvio mucho, mil agradecimientos pa ti.

18 09 2010
Benjitaz

Hola k tal oie podrias explicar como se guarda ??? con este mismo ejemplo .. Gracias..

17 03 2011
yhonx

Gracias Amigo .. de mucha ayuda me sirvió tu ejemplo!!

22 03 2011
Javi

Buenas!

Una gran explicación!!

Ahora me surge la duda de si existe la segunda parte en la que se explica como guardar la imagen!necesito saber como se hace….a ver si me podéis ayudar!!

un saludo y muchas gracias!!

30 05 2011
Juantxi

¡Hola!
te has marcado una guía sencilla, práctica y sobretodo útil. Me ha servido de gran ayuda para empezar a moverme con los JFileChoosers. ¡Muchas gracias!

22 06 2011
julio ruiz

Excelente aporte amigo, muy claro, excelente explicación. ¡Graciasss!

3 10 2011
Anónimo

gracias super bien

19 11 2011
Tomas

Al igual que los demas agradezco el aporte muy bueno (Y)

20 11 2011
Anónimo

muchas gracias x el aporte me sirvio mucho (y)😀 ojala hagas mas con diferentes componentes

14 02 2012
Jfilechooser | TagHall

[…] "jqmodal", embeddedHeight: "400", embeddedWidth: "425", themeCSS: "" }); . Aprendiendo con JFileChooser … Parte 1 « INFORUX . JFILECHOOSER « Programación Orientada a […]

22 05 2012
Anónimo

me hacia falta algo como esto gracias!!!

22 06 2012
claudio

hola me podrias dar el codigo fuente por favor😀 te lo agradeceria mucho

22 06 2012
claudio

como puedo ver la imagen a la medida del jdesktoppane
ya que se ve la imagen gigante solo se logra visualizar unaparte de la imagen solamente….??

26 09 2012
Yomisma

Gran trabajo, lo probaré…

15 10 2012
Anónimo

Gracias por el ejemplo.

22 10 2012
cholemon

Muchas gracias brother……… Dios te Bendiga..

16 12 2012
Maria

hola podrias emviar el codigo fuente gracias

1 01 2013
Jo0k3r

gracias ,porfin encuentro una guia real

5 08 2013
Daniel Eusebio

Muy interesante la manera de programar… Gracias por el aporte.

4 10 2013
varlos

GRACIS POR TODO PERO AHORA QUIERO LEER ARCHIVO DE TEXTO

4 10 2013
rap solo

si me sirvio gracias pero hora quiero leer archivos de texto .txt.doc

6 11 2013
Rossi Alegria

Gracias, la información fue clara y directa, sigue así🙂

20 05 2015
Conversaciones sobre Programación. Build 2012.07 - Linea de Codigo

[…] Aprendiendo con el JFileChooser. […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: