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!
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!
allora per aprire faccio così:
per salvare 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(); } } } }
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(); } } } }
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)
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?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)
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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.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.
credevo ke salvando MTabbedP facevo prima poi per caricare tutto...
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 ......Originariamente inviato da Metflar
MTabbedP è creato da me ed è un JTabbedPane
In ogni caso ripeto: il messaggio della eccezione NotSerializableException ti dice chiaramente quale è la classe che non è serializzabile.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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;
}
}
Ok, ora è chiaro che MTabbedP è un JPanel e contiene dei componenti. Fin qui ok ma ... Mpanel? PDpanel?Originariamente inviato da Metflar
public class MTabbedP extends JPanel {
....
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet