Java - JFileChooser

 
Vista:

JFileChooser

Publicado por Joan Manuel (5 intervenciones) el 03/06/2011 19:20:05
Mi problema es el siguiente, he creado una aplicación que contiene tres botones, uno de abrir, otro guardar y pues el otro limpiar, y también he creado un textArea, he creado una clase con varios métodos para leer archivo de texto en un textArea, la clase es la siguiente:

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
public String leer (String nombre){
 
    File f;
    FileReader lectorArchivo;
 
    try{
    f = new File(nombre);
    lectorArchivo = new FileReader(f);
    BufferedReader br = new BufferedReader(lectorArchivo);
    String l="";
    String aux="";
    while(true){
        aux=br.readLine();
        if(aux!=null)
            l=l+aux+"\n";
 
        else
            break;
    }
    br.close();
    lectorArchivo.close();
    return l;
    }catch(IOException e){
        JOptionPane.showMessageDialog(null, "Error al leer archivo" + e);
    }
 
    return null;
 
    }
 
    public String leerGrafico(){
        File f;
        javax.swing.JFileChooser j = new javax.swing.JFileChooser();
        j.showOpenDialog(j);
        String path = j.getSelectedFile().getAbsolutePath();
        String lectura="";
        f = new File(path);
 
        try{
           FileReader fr = new FileReader(f);
           BufferedReader br = new BufferedReader(fr);
           String aux;
           while((aux = br.readLine())!=null)
               lectura = lectura+aux+"\n";
 
        }catch(IOException e){
 
            JOptionPane.showMessageDialog(null, "Error para seleccion archivo"+e);
 
        }
return lectura;
}

tengo una duda, y es que si selecceionas un archivo y le das a cancelar te lo corre como quiera, o si por efemplo ejecuta la aplicacion y no seleccionas ningun archivo pues explota el programa, el problema se debe a esta linea de la clase Salida:

String path = j.getSelectedFile().getAbsolutePath();

dice que si esta seleccionado, entonce aun cuando seleccionas y le das a cancelar pues este abre el texto, y si no seleccionas nada explota el programa.....la pregunta es si existe algun otro metodo que no sea getSelectedFile().getAbsolutePath();

he intentado de la siguiente manera, pero me cierra la aplicacion del textArea por el System.exit(0):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public String leerGrafico()
{
File f;
javax.swing.JFileChooser j= new javax.swing.JFileChooser();
j.showOpenDialog(j);
try{
String path= j.getSelectedFile().getAbsolutePath();
 
String lectura="";
f = new File(path);
try{
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String aux;
while((aux = br.readLine())!=null)
lectura = lectura+aux+"\n";
}catch(IOException e){}
return lectura;
}catch(NullPointerException e){
javax.swing.JOptionPane.showMessageDialog(j, "Has seleccionado cerrar programa, saliendo...");
System.exit(0);
}return null;
}


OoOoH si alguien otra forma para hacerlo mejor, pues mejor.......gracias por la atencion, espero y pasen buen dia
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

JFileChooser

Publicado por Tom (1831 intervenciones) el 04/06/2011 11:28:43
Copiado de la documentación de JFileChooser:

1
2
3
4
5
int returnVal = chooser.showOpenDialog(parent);
    if(returnVal == JFileChooser.APPROVE_OPTION) {
       System.out.println("You chose to open this file: " +
            chooser.getSelectedFile().getName());
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

JFileChooser

Publicado por fsgn66 (2 intervenciones) el 07/01/2017 00:55:47
A mi me funciona separando la instrucción en dos partes así:

1
2
3
4
5
int result = jFileChooser1.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
     File selectedFile = j.getSelectedFile();
     String path = selectedFile.getAbsolutePath();
 }
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar