Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790

    Aprire file strutturato[java]

    allora dal mio programma si può salvare un file che ha al suo interno un JTabbedPane...adesso vorrei sapere cm prendo questo componente dal file.
    grazie!

  2. #2
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    allora per aprire faccio così:
    codice:
    public class OpenF {
        static File f=new File("");
        /** Creates a new instance of OpenF */
        public OpenF() {
            JFileChooser fc=new JFileChooser();
            fc.setFileFilter(new FileFilter() {
                public String getDescription() { return "lupix"; }
                public boolean accept(File f) {
                    if(f.isDirectory()) return true;
                    if(f.getName().endsWith(".lupix")) return true;
                    return false;
                }
            });
            fc.setDialogTitle("Apri");
            fc.setSelectedFile(new File("*.lupix"));
            fc.setApproveButtonText("Apri");
            int v=fc.showOpenDialog(null);
            if (v == JFileChooser.APPROVE_OPTION) {
                f = fc.getSelectedFile();
               
                try {
                    
                    FileInputStream fis=new FileInputStream(f);
                    ObjectInputStream ois=new ObjectInputStream(fis);
                    window.p.add((MTabbedP)(ois.readObject()));
                    ois.close();
                } catch (FileNotFoundException a) {
                    System.out.println("Il file "+f + " non esiste o non puo' essere aperto");
                } catch(IOException e){
                    e.printStackTrace();
                }
                catch(Exception e){
                    e.printStackTrace();
                }
                
            }
        }
    }
    per salvare così:
    codice:
    public class SaveF {
        static File f=new File("");
        /** Creates a new instance of SaveF */
        public SaveF() {
            
            JFileChooser fc=new JFileChooser();
            fc.setFileFilter(new FileFilter() {
                public String getDescription() { return "lupix"; }
                public boolean accept(File f) {
                    if(f.isDirectory()) return true;
                    if(f.getName().endsWith(".lupix")) return true;
                    return false;
                }
            });
            fc.setDialogTitle("Salva con nome");
            fc.setSelectedFile(new File("*.lupix"));
            fc.setApproveButtonText("Salva");
            int v=fc.showOpenDialog(null);
            if (v == JFileChooser.APPROVE_OPTION) {
                try{
                    f=fc.getSelectedFile();
                    FileOutputStream file = new FileOutputStream(f);
                    ObjectOutputStream Output = new ObjectOutputStream(file);
                    Output.writeObject(window.mtp);
                    Output.close();
                } catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
    }

  3. #3
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    il file lo salva ma il programma rimane in esecuzione cn fatica per le troppe eccezzioni prodotte!(ma tutto è causato da java.io.NotSerializableException)
    e se lo apro(il file) nn succede nulla(e produce un'eccezzione:java.io.EOFException).
    ma se lascio tutto vuota funziona(se nn inserisco dati dentro la jtable presente e nn creo alcune delle tante cosette ke c sn in questo tabbedPane)

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Metflar
    il file lo salva ma il programma rimane in esecuzione cn fatica per le troppe eccezzioni prodotte!(ma tutto è causato da java.io.NotSerializableException)
    Il codice che hai postato non è completo e quindi non si può capire tutto .... comunque da quello che vedo, l'oggetto serializzato è di una "tua" classe MTabbedP. Ora la domanda è: MTabbedP è serializzabile? E sono altrettanto serializzabili tutti gli oggetti eventualmente contenuti?

    Se ti viene lanciata la eccezione NotSerializableException vuol dire che un oggetto non è serializzabile. E il messaggio della eccezione ti dice anche quale classe non è serializzabile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da andbin
    Il codice che hai postato non è completo e quindi non si può capire tutto .... comunque da quello che vedo, l'oggetto serializzato è di una "tua" classe MTabbedP. Ora la domanda è: MTabbedP è serializzabile? E sono altrettanto serializzabili tutti gli oggetti eventualmente contenuti?

    Se ti viene lanciata la eccezione NotSerializableException vuol dire che un oggetto non è serializzabile. E il messaggio della eccezione ti dice anche quale classe non è serializzabile.
    MTabbedP è creato da me ed è un JTabbedPane con al suo interno una JTable e dei bottoni in una scheda e in un altra un pannello ke contiene form.
    credevo ke salvando MTabbedP facevo prima poi per caricare tutto...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Metflar
    MTabbedP è creato da me ed è un JTabbedPane
    Cioè MTabbedP estende JTabbedPane? (in tal caso deriva da JComponent che è serializzabile). Per cortesia, sii più preciso .... non posso sapere come è fatto il tuo codice ......

    In ogni caso ripeto: il messaggio della eccezione NotSerializableException ti dice chiaramente quale è la classe che non è serializzabile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    eccolo MTabbedP

  8. #8
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    codice:
    public class MTabbedP extends JPanel {
    static Mpanel mp;

    /** Creates a new instance of MTabbedP */
    public MTabbedP() {
    super(new GridLayout(1, 1));

    JTabbedPane tabbedPane = new JTabbedPane();
    JComponent panel1;
    JComponent panel2;

    panel1 = makePdPanel();
    tabbedPane.addTab("Libro giornale", null, panel1, "Libro giornale");
    tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);
    panel2 = makeMpanel();
    tabbedPane.addTab("Libro mastro", null, panel2, "Libro mastro");
    tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);
    add(tabbedPane);
    tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_T AB_LAYOUT);
    }

    protected JComponent makeMpanel() {
    mp = new Mpanel();

    return mp;
    }

    protected JComponent makePdPanel() {
    PDpanel pd = new PDpanel();

    return pd;
    }
    }

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Metflar
    public class MTabbedP extends JPanel {
    ....
    Ok, ora è chiaro che MTabbedP è un JPanel e contiene dei componenti. Fin qui ok ma ... Mpanel? PDpanel?

    Purtroppo, lo ripeto, non posso conoscere tutta la struttura del tuo programma e immagino che non abbia neanche molto senso che tu posti l'intero sorgente del programma.

    La eccezione NotSerializableException ti dice quale classe non è serializzabile. Una volta che sai quale è, agisci di conseguenza per renderla serializzabile o, se non è possibile, aggirare il problema tramite l'implementazione dei metodi writeObject/readObject.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.