Salve a tutti, il problema è il seguente:
ho un menuItem Open che si occupa di selezionare e deserializzare dei file serializzati in precedenza contenenti 2 dati ti tipo Point, String, int. La serializz/deserializz funziona perfettamente e il Model viene aggiornato con i nuovi dati provenienti dal file caricato, la View invece(che contiene un JPanel su cui si possono disegnare figure geometriche) non viene ricaricata con la nuova figura ma rimane bianca.
Vi posto un pò di codice:
Questa è la classe che contiene il main e il menu con le possibili azioni da fare.
il metodo model.rep() è costituito solo da 2 comandi: setChanged(); e notifyObservers(); che dovrebbero informare la View, la quale a sua volta nel metodo update ha il comando repaint();codice:public class ProjectApplication extends JFrame implements ActionListener { private static final long serialVersionUID = 1; private JMenuItem New , Open , Save , Close , Line , Rect, Circle; private JFileChooser chooser; private FileNameExtensionFilter filter; private Model model = new Model(); private View view = new View(model); private Controller controller = new Controller(model , view); public ProjectApplication() { initMenu(); add(view); pack(); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } . . . public void actionPerformed(ActionEvent evt){ . else if(source.equals(Open)) { Model m = new Model(); try { chooser.showOpenDialog(null); File fileName = chooser.getSelectedFile(); FileInputStream fis = new FileInputStream(fileName); ObjectInputStream ois = new ObjectInputStream(fis); m = (Model)ois.readObject(); ois.close(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } model = m; model.rep();
View:
Il problema è invece che dopo il caricamento del file, l'update(Observable o, Object arg) della view non parte nonostante il model lo avverta con il metodo rep();codice:public void update(Observable o, Object arg){ repaint(); } public void paintComponent(Graphics g){ super.paintComponent(g); if (model.getState == "line") { g.drawLine(....); } else if (model.getState == "rect") { g.drawRect(...); }
Model:
Non capisco proprio perchè non venga disegnata la nuova figura caricata da file...codice:public void rep() { setChanged(); notifyObservers(); }

Rispondi quotando
