Salve ho urgente bisogno di sapere come posso serializzare il mio proggetto
Queste sono le classi
codice:package mondo; import java.io.Serializable; import java.util.*; public class Stato implements Serializable{ private static final long serialVersionUID = 1L; public String nome; public String capitale; public long popolazione; public double dimensione; public HashSet<String> lingue = new HashSet<String>(); public HashSet<String> confini = new HashSet<String>(); public Stato(){ this.nome=new String(); this.capitale=new String(); this.popolazione=0L; this.dimensione=0.0d; this.lingue=new HashSet<String>(); this.confini=new HashSet<String>(); } public String getNome() { return nome; } public String getCapitale() { return capitale; } public long getPopolazione() { return popolazione; } public double getDimensione() { return dimensione; } public HashSet<String> getConfini() { return confini; } public void setNome(String n) { nome = n; } public void setCapitale(String c) { capitale = c; } public void setPopolazione(long p) { popolazione = p; } public void setDimensione(double d) { dimensione = d; } public void setLingue(String l) { lingue.add(l); } public void setConfini(String c) { confini.add(c); } public static Comparator<Stato> comparePop() { return new Comparator<Stato>() { public boolean equals(Object o) { return false; } public int compare(Stato e1, Stato e2) { return (int) (e1.popolazione - e2.popolazione); } }; } public static Comparator<Stato> compareDim() { return new Comparator<Stato>() { public boolean equals(Object o) { return false; } public int compare(Stato e1, Stato e2) { return (int) (e1.dimensione - e2.dimensione); } }; } }codice:package mondo; import java.util.*; public class ElencoStati implements Serializable{ private static final long serialVersionUID = 1L; Vector<Stato> sta = new Vector<Stato>(); public ElencoStati() { super(); this.sta=new Vector<Stato>(); } public boolean Esiste(String c){ boolean t= false; int cont=0; while (cont< sta.size()) { if (((Stato) sta.get(cont)).getNome().contains(c)) { t = true; break; } else { cont++; } } return t; } public String getCapitale(String c) { String cap = new String(); if (!(sta.isEmpty())) { int i = 0; while (i < sta.size()) { if ((((String) ((Stato) sta.get(i)).getNome()) .equalsIgnoreCase(c))) cap = (((Stato) sta.get(i)).getCapitale()); if (i != sta.size()) i++; } } return cap; } public long getPopolazione(String c) { long pop = 0L; if (!(sta.isEmpty())) { int i = 0; while (i < sta.size()) { if ((((String) ((Stato) sta.get(i)).getNome()) .equalsIgnoreCase(c))) pop = (((Stato) sta.get(i)).getPopolazione()); if (i != sta.size()) i++; } } return pop; } public double getDimensione(String c) { double dim = 0.0d; if (!(sta.isEmpty())) { int i = 0; while (i < sta.size()) { if ((((String) ((Stato) sta.get(i)).getNome()) .equalsIgnoreCase(c))) dim = (((Stato) sta.get(i)).getDimensione()); if (i != sta.size()) i++; } } return dim; } }
ho provato a mettere il seguente codice alla fine del blocco in grassetto ma niente:codice:package mondo; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.JOptionPane; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Scelta extends JFrame { private static final long serialVersionUID = 1L; JLabel label = null; JScrollBar vscroll = null; JTextArea area = null; JButton button1 = null; JButton button2 = null; JButton button3 = null; JButton button4 = null; JButton button5 = null; JButton button6 = null; JButton button7 = null; JButton button8 = null; JButton button9 = null; JButton button10 = null; JButton button11 = null; JButton button12 = null; ElencoStati el = new ElencoStati(); Stato s=new Stato(); double dimensione = 0.0d; long popolazione = 0L; public Scelta() { super("Mappa geografica"); setDefaultCloseOperation(EXIT_ON_CLOSE); label = new JLabel("Clicca su uno dei bottoni"); button1 = new JButton("Aggiungi"); button2 = new JButton("Cerca capitale"); button3 = new JButton("Cerca popolazione"); button4 = new JButton("Cerca dimensione"); button5 = new JButton("Set confini"); button6 = new JButton("Carica Dati"); button7 = new JButton("Confinano?"); button8 = new JButton("Numero confini"); button9 = new JButton("Confinanti"); button10 = new JButton("Ordina per popolazione"); button11 = new JButton("Ordina per dimensione"); button12 = new JButton("Stampa elenco"); vscroll = new JScrollBar(); area = new JTextArea(30,10); [B]button1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { area.setText(""); String nome = JOptionPane.showInputDialog(null, "Inserire il nome dello stato: "); if (el.Esiste(nome) == false) { String capitale = JOptionPane.showInputDialog(null, "Inserire la capitale dello stato: "); try { popolazione = Long.parseLong(JOptionPane .showInputDialog(null, "Inserisci la popolazione: ")); } catch (NumberFormatException e2) { JOptionPane.showMessageDialog(null, "Valore non valido devi inserire un long"); } try { dimensione = Double.parseDouble(JOptionPane .showInputDialog(null, "Inserire la dimensione: ")); } catch (NumberFormatException e1) { JOptionPane.showMessageDialog(null, "Valore non valido devi inserire un double"); } Stato s = new Stato(); s.setNome(nome); s.setCapitale(capitale); s.setPopolazione(popolazione); s.setDimensione(dimensione); el.sta.add(s); } else area.setText("Lo Stato " + nome + " è già presente"); [B] } } ); button2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { area.setText(""); String cercato = JOptionPane .showInputDialog(null, "Inserire il nome dello stato di cui si vuole conoscere la capitale: "); String n = el.getCapitale(cercato); area.setText("La capitale e' : " + n); } } ); button3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { area.setText(""); String cercato1 = JOptionPane .showInputDialog(null, "Inserire il nome dello stato di cui si vuole conoscere la popolazione: "); if (el.Esiste(cercato1)) { long p = el.getPopolazione(cercato1); area.setText("La popolazione e' : " + p); } else area.setText("Lo Stato " + cercato1 + " non è presente"); } } ); button4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { area.setText(""); String cercato2 = JOptionPane .showInputDialog(null, "Inserire il nome dello stato di cui si vuole conoscere la dimensione: "); if (el.Esiste(cercato2)) { double d = el.getDimensione(cercato2); area.setText("La dimensione e' : " + d); } else area.setText("Lo Stato " + cercato2 + " non è presente"); } } ); JPanel panel1 = new JPanel(); panel1.setLayout(new GridLayout(6, 1)); panel1.add(button1); panel1.add(button2); panel1.add(button3); panel1.add(button4); panel1.add(button5); panel1.add(button6); JPanel panel2 = new JPanel(); panel2.setLayout(new GridLayout(6, 1)); panel2.add(button7); panel2.add(button8); panel2.add(button9); panel2.add(button10); panel2.add(button11); panel2.add(button12); JPanel panel3 = new JPanel(); panel3.setLayout(new GridLayout(1, 2)); panel3.add(area); panel3.add(vscroll); Container panel = getContentPane(); panel.setLayout(new BorderLayout()); panel.add(panel2, BorderLayout.EAST); panel.add(panel1, BorderLayout.WEST); panel.add(panel3, BorderLayout.CENTER); panel.add(label, BorderLayout.NORTH); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); pack(); } public static void main(String[] args) { Scelta app = new Scelta(); app.setVisible(true); } }
Dov'è l'errore?codice:try{ ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream("TestFile.dat")); os.writeObject(el); os.flush(); os.close(); } catch(IOException e){ System.out.println("error writing to file"); System.exit(1); } /** * Legge il contenuto del file */ ElencoStati a; try{ ObjectInputStream is=new ObjectInputStream(new FileInputStream("TestFile.dat")); a=(ElencoStati)is.readObject(); is.close(); } catch(IOException ex){ System.out.println("file not found"); System.exit(1); } catch(ClassNotFoundException e1){ System.out.println("couldn't find class"); System.exit(5); }

Rispondi quotando