You are on page 1of 5

6/2/2015

ComousarelcomponenteJFileChooserenunaaplicacingrficaenJava|DiscoDurodeRoer

Dis
coD
u
r
odeR
o
er
Dejadegolpearatuordenadorysolucionatusproblemasaqu
Acercadem

Manuales

Ejercicios

Software

Sistemasoperativos

Ingls

Misaplicaciones

Contctanos

AdOptions

AdsbySmartSaver

Buscaloquenecesitesenlaweb
O CT

13

2014

ComousarelcomponenteJFileChooseren
unaaplicacingrficaenJava

Hola a todos, hoy os explicare como podemos usar el componente JFileChooser en una aplicacin
grficaenJava.
La clase JFileChooser nos permite acceder a nuestro sistema de ficheros y seleccionar ficheros. Esto
nos puede ser til para abrir fichero que contengan alguna informacin til para nuestra aplicacin o
inclusoparaguardarinformacinenficheros.

Search

Anuncios

Sguenos!

Vamosavercomofuncionapasoapaso,primerovamosacrearunaventanasimpleconuncampode
texto,unbotnyunreadetexto(conscroll).
Aquosdejoelcdigo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

importjava.awt.EventQueue;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.io.*;
importjavax.swing.*;

publicclassEjemploJFileChooserextendsJFrame{

privateJPanelcontentPane;
privateJTextFieldtextField;
privateJTextAreatextArea;

/**
*Launchtheapplication.
*/
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
EjemploJFileChooserframe=newEjemploJFileChooser();
frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}

/**
*Createtheframe.
*/
publicEjemploJFileChooser(){

//Parametrosasociadosalaventana
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,450,300);
contentPane=newJPanel();
contentPane.setLayout(null);
setContentPane(contentPane);

textField=newJTextField();
textField.setToolTipText("Insertalarutadelficherodeaudio");
textField.setBounds(52,26,209,20);
contentPane.add(textField);
textField.setColumns(10);

JButtonbtnSeleccionar=newJButton("Seleccionar...");
btnSeleccionar.setBounds(288,25,109,23);
contentPane.add(btnSeleccionar);

textArea=newJTextArea();
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setBounds(52,76,360,156);

JScrollPanescroll=newJScrollPane(textArea);
scroll.setBounds(52,76,360,156);
contentPane.add(scroll);

http://www.discoduroderoer.es/comousarelcomponentejfilechooserenunaaplicaciongraficaenjava/

Skype
ContactaconnosotrosdesdeSkype!
Pinchaenlaimagenparaobtenermas
informacin

Donacin
Siquieresagradecernuestrotrabajodealguna
forma,puedeshacerloinvitndonosauncaf.

Manualesaletorios
TiposdeexcepcionesenJava
CaracteresdeescapeenJava
ComentariosdeJava

1/5

6/2/2015

ComousarelcomponenteJFileChooserenunaaplicacingrficaenJava|DiscoDurodeRoer

60
61
62
63
64
65
66
67

btnSeleccionar.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){

}
});

}
}

Asquedara:

Arreglosoarraysenpseudocdigo
TraducirWPPollsdeWordpress
VerarchivosocarpetasocultasenWindows
FuncionexcelO
SelectoresbsicosCSS
ListaspersonalizadasenExcel
MtodosdeString

Contadordevisitas

TOPDescargados

Windows7portable
1289downloads 272.19MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7664)

Lossiguientesbloquesdecdigoqueveras,sonparacopiareneleventodelbotn,yaqueveremos
muchasversiones.PrimerocrearemosunobjetodeJFileChooser,lopodemoscrearsinparmetroso
unarutapordefectoindicadaconunStringounFile.
Despus invocamos el mtodo showOpenDialog(contentPane) que nos devolver un int, para saber
queopcinrealizaelusuario.Tenemoslassiguientesconstantes:
JFileChooser.CANCEL_OPTION:Sielusuariopulsaencancelar.
JFileChooser.APPROVE_OPTION:Sielusuariopulsaenaceptar
JFileCHooser.ERROR_OPTION:Siocurrealgnerror.
La que nos interesa es JFileChooser.APPROVE_OPTION, despus podemos copiar la ruta de ese
ficheroconelmtodogetSelectedFile()seguardaraenunobjetoFile.
Esta ruta la podramos guardar en el campo de texto, tambin podramos hacer que escribiera el
contenidodeltextoeneltextarea.
Veamoscomoquedademomento:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

//CreamoselobjetoJFileChooser
JFileChooserfc=newJFileChooser();

//Abrimoslaventana,guardamoslaopcionseleccionadaporelusuario
intseleccion=fc.showOpenDialog(contentPane);

//Sielusuario,pinchaenaceptar
if(seleccion==JFileChooser.APPROVE_OPTION){

//Seleccionamoselfichero
Filefichero=fc.getSelectedFile();

//Ecribelarutadelficheroseleccionadoenelcampodetexto
textField.setText(fichero.getAbsolutePath());

try(FileReaderfr=newFileReader(fichero)){
Stringcadena="";
intvalor=fr.read();
while(valor!=1){
cadena=cadena+(char)valor;
valor=fr.read();
}
textArea.setText(cadena);
}catch(IOExceptione1){
e1.printStackTrace();
}
}

Enelcasoanterior,solofuncionariaconficheroslegibles,noconotrostiposdeficheros,siqueremosque
solo se puedan seleccionar los ficheros legibles como los txt, deberemos crear un objeto de la
clase FileNameExtensionFilter, le pasaremos un String con la descripcin del filtro y despus las
extensionesenformadestring,unString por extensin. Este cdigo lo aadimos, despus de crear el
objetoJFileChooser:
1
2
3
4
5

//Creamoselfiltro
FileNameExtensionFilterfiltro=newFileNameExtensionFilter("*.TXT","txt");

//Leindicamoselfiltro
fc.setFileFilter(filtro);

TESTPETExam1
1031downloads 132.64MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7758)

TESTPETExam2
664downloads 119.82MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7759)

TestPETexam6
592downloads 176.26MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7764)

TestPETexam3
488downloads 28.49MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7762)

TestPETexam5
462downloads 82.92MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7763)

TestPETexam4
448downloads 27.81MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7761)

VocabularioPET
441downloads 310.80KB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7755)

FCEExam(First
CertificateEnglish)1
parte
178downloads 81.88MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7712)

FCEExam(First
CertificateEnglish)2
parte
142downloads 220.19MB
Download
(http://www.discoduroderoer.
es/?wpdmdl=7713)

Asescomolovemos:

http://www.discoduroderoer.es/comousarelcomponentejfilechooserenunaaplicaciongraficaenjava/

2/5

6/2/2015

ComousarelcomponenteJFileChooserenunaaplicacingrficaenJava|DiscoDurodeRoer

Pordefecto,JFileChoosersolonospermiteelegirficheros,siqueremoselegirsolodirectoriosoambos,
usaremoselmtodosetFileSelectionMode(intmode),tambintenemosconstantesparaello:
JFileChooser.FILES_ONLY:soloficheros.
JFileChooser.DIRECTORIES_ONLY:solodirectorios.
JFileChooser.FILES_AND_DIRECTORIES:ficherosydirectorios.
Porejemplo:

AdsbySmartSaver

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

AdOptions

//CreamoselobjetoJFileChooser
JFileChooserfc=newJFileChooser();

//Indicamosloquepodemosseleccionar
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

//Creamoselfiltro
FileNameExtensionFilterfiltro=newFileNameExtensionFilter("*.TXT","txt");

//Leindicamoselfiltro
fc.setFileFilter(filtro);

//Abrimoslaventana,guardamoslaopcionseleccionadaporelusuario
intseleccion=fc.showOpenDialog(contentPane);

//Sielusuario,pinchaenaceptar
if(seleccion==JFileChooser.APPROVE_OPTION){

//Seleccionamoselfichero
Filefichero=fc.getSelectedFile();

//Ecribelarutadelficheroseleccionadoenelcampodetexto
textField.setText(fichero.getAbsolutePath());

try(FileReaderfr=newFileReader(fichero)){
Stringcadena="";
intvalor=fr.read();
while(valor!=1){
cadena=cadena+(char)valor;
valor=fr.read();
}
textArea.setText(cadena);
}catch(IOExceptione1){
e1.printStackTrace();
}
}

TambinpodemosseleccionarunaseriedeficherosconelmtodosetMultiSelectionEnabled(true) lo
insertaremos despus de crear el objeto. Debemos tener en cuenta, que para almacenar los
seleccionadosusaremosunarraydeFilesyenlugardeusarelmtodogetSelectedFile() usaremos el
mtodogetSelectedFiles().
Cambiaremosalgunascosasahora,elcampodetextonolousaremos:
1
2
3
4
5
6
7
8
9
10

//CreamoselobjetoJFileChooser
JFileChooserfc=newJFileChooser();

//Indicamosquepodemosseleccionarvariosficheros
fc.setMultiSelectionEnabled(true);

//Indicamosloquepodemosseleccionar
fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

//Creamoselfiltro

http://www.discoduroderoer.es/comousarelcomponentejfilechooserenunaaplicaciongraficaenjava/

3/5

6/2/2015

ComousarelcomponenteJFileChooserenunaaplicacingrficaenJava|DiscoDurodeRoer

11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

FileNameExtensionFilterfiltro=newFileNameExtensionFilter("*.TXT","txt");

//Leindicamoselfiltro
fc.setFileFilter(filtro);

//Abrimoslaventana,guardamoslaopcionseleccionadaporelusuario
intseleccion=fc.showOpenDialog(contentPane);

//Sielusuario,pinchaenaceptar
if(seleccion==JFileChooser.APPROVE_OPTION){

//Seleccionamoselfichero
File[]ficheros=fc.getSelectedFiles();

for(inti=0;i<ficheros.length;i++){
try(FileReaderfr=newFileReader(ficheros[i])){
Stringcadena="";
intvalor=fr.read();
while(valor!=1){
cadena=cadena+(char)valor;
valor=fr.read();
}
textArea.append(cadena+"\n");
}catch(IOExceptione1){
e1.printStackTrace();
}
}
}

Por ltimo, veremos como guardar texto en lugar de abrirlo, el campo de texto no lo usaremos, el
textarea contendr el texto del fichero. Usaremos el mtodo showSaveDialog(contentPane) para
guardarelfichero,recuerdaescribirelnombredelfichero.

AdsbySmartSaver

1
2
3
4
5
6
7
8
9
10
11
12
13
AdOpt
14
15
16
17
18
19
20
21
22

//CreamoselobjetoJFileChooser
JFileChooserfc=newJFileChooser();

//Abrimoslaventana,guardamoslaopcionseleccionadaporelusuario
intseleccion=fc.showSaveDialog(contentPane);

//Sielusuario,pinchaenaceptar
if(seleccion==JFileChooser.APPROVE_OPTION){

//Seleccionamoselfichero
Filefichero=fc.getSelectedFile();

try(FileWriterfw=newFileWriter(fichero)){

//Escribimoseltextoenelfichero
fw.write(textArea.getText());

}catch(IOExceptione1){
e1.printStackTrace();
}

EnnetBeans,tendreisquehacerlomismo.Tambinhayuncomponenteporsiloquereisponer
directamenteenunJFrame.
Esperoqueosseadeayuda.Sitenisdudas,preguntad.Estamosparaayudarte.
Backtotop

Comparteestaentrada!

41

Calificaestepost

Abrirunficherodesdenuestra
aplicacinenJava

InstalarNetBeansenLinux

2Comments
marilu
07/01/2015@

Hola,heutilizadoelJFileChosseryfuncionaperfectamenteparaaplicacionesdondeelclientey

http://www.discoduroderoer.es/comousarelcomponentejfilechooserenunaaplicaciongraficaenjava/

4/5

6/2/2015

ComousarelcomponenteJFileChooserenunaaplicacingrficaenJava|DiscoDurodeRoer

elservidorestanenlamismamaquina,elproblemaescuandoelservidoryelclienteestanen
maquinasdistintas,esdecirelclientequiereguardarunarchivoyledaclickenguardarpero
nuncaleapareceelcuadrodedialogoyaqueestecuadrodedialogoleapareceenlamaquina
delservidor,podriasayudarmecomosepuedehacerparaqueelcuadrodedialogoaparescaen
elladodelusuarioesdecirdelcliente.
00
Calificar

Pikao
08/01/2015@

Debescolocarelcdigoenlapartedelcliente.Unsaludo.
00
Calificar

LeaveaReply
YourName*
YourEmail*
YourWebsite

CdigoCAPTCHA*

PostComment

DiscoDurodeRoer2015
PoweredbyWordPressThemifyWordPressThemes

AdsbySmartSaver

http://www.discoduroderoer.es/comousarelcomponentejfilechooserenunaaplicaciongraficaenjava/

AdOptions

5/5