Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di mist3r0
    Registrato dal
    Mar 2007
    Messaggi
    103

    Caricare file con JFileChooser

    Ciao a tutti,

    Sto realizzando un'applicazione, e devo implementare le funzioni di salvataggio e ripristino del file.

    Ho un'interfaccia grafica, implementa SERIALIZABLE, Il salvataggio sono riuscito a farlo tranquillamente, il ripristino no.

    Creo il JFilechooser openDialog, però non riesco in nessun modo a capire come risalire all'interfaccia grafica che avevo salvato in un file con la precedente operazione di salvataggio.

    Vi posto il codice...


    ObjectInputStream objin=null;
    FileInputStream in =null;
    Tavolo temp=null; // interfacci che implements serializable
    JFileChooser chooser =new JFileChooser();
    try{
    chooser.setCurrentDirectory(new File("C:\""));
    File f=(File) chooser.getSelectedFile();
    if(chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
    f=(File) chooser.getSelectedFile();
    in = new FileInputStream( f );
    objin=new ObjectInputStream(new FileInputStream(f));
    }
    }
    catch(IOException exc){}
    try{
    temp = (Tavolo) objin.readObject();
    }
    catch(IOException exc1){}
    catch(ClassNotFoundException ecx3){}


    temp.setVisible(true);

    }


    Qual'è l'errore che faccio???

    Compilandolo mi da errore NullPointerException su "temp"...
    M|$T3R®

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    1) Una NullPointerException o una qualsiasi altra eccezione sono errori che possono essere sollevati solo a RunTime e non in fase di compilazione;

    2) Hai dichiarato e istanziato inutilmente l'oggetto FileInputStream in: non lo usi da nessuna parte, visto che l'ObjectInputStream lo costruisci a partire da un InputStream diverso e anonimo;

    3) Bisognerebbe vedere come è stato creato il file per capire se effettivamente esso possa contenere un oggetto di tipo Tavolo come primo oggetto. Se così non fosse avresti anche una ClassCastException o chissà cos'altro;

    4) Se l'utente preme "Annulla" otterrai sempre e comunque quell'eccezione, dato che l'oggetto temp non verrà mai istanziato, ma rimane null e tu lo usi ugualmente dopo la serie di try/catch.


    Prova ad implementare in modo diverso la situazione, tenendo conto di tutte le casistiche (l'utente seleziona un file, l'utente clicca su annulla, l'utente chiude la JFileChooser, ecc) e prova anche a vedere se il primo oggetto contenuto nel file selezionato è effettivamente un'istanza della classe Tavolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.