è necessario utilizzare un model-view-controller approach. Si serializza solo il modello, non la vista. La vista dovrebbe essere popolata dal modello. Serializzazione di componenti Swing non è comunque raccomandato a tutti:
While Swing components do implement the Serializable interface, they are not portable between different versions of the Java Virtual Machine
Guardando a quello che si ha, si dovrebbe avere alcune classi che sono il vostro modello e hanno solo i dati. Queste classi saranno serializzate usando XStream da qualche parte. Le classi Swing hanno quindi metodi per ricevere queste classi modello e popolare i campi e gli editor. È quindi possibile estendere l'interfaccia utente, ad esempio, senza dover modificare la classe, aggiungere più funzionalità o fornire visualizzazioni diverse per lo stesso set di dati.
Per renderlo più elaborato, lo Swing Component non deve memorizzare e caricare il modello, ma è necessario disporre di un'interfaccia controller da passare al componente swing per eseguire queste operazioni. In questo modo, è possibile migliorare il test dell'unità e disaccoppiare la logica di archiviazione dalla logica della vista.
Se XStream è configurato correttamente e se si presta attenzione al modello e ai campi, dovrebbe essere possibile aggiungere più campi alle classi del modello senza interrompere la compatibilità con le versioni precedenti.
Non è consigliabile utilizzare comunque Serializzazione Java, in quanto non è consigliabile utilizzarlo per l'archiviazione. La serializzazione Java eccelle nel richiamo del metodo remoto. E 'relativamente fragile quando le classi del modello cambiano ..
fonte
2010-05-27 13:16:48
Se il java bean è nuovo e utilizzato per i dati, XMLEncoder è una buona idea. Altrimenti, continuo a pensare che serializzare un JComponent sia in generale una cattiva pratica. –
@ Mario Ortegón: Sì, sono d'accordo; ma l'uomo può vedere la "versione bean" di un JComponent come un modello di design leggero: non ci sono gli ascoltatori, ad esempio, solo il colore, lo sfondo, la posizione ... Quindi, se vogliamo serializzare/deserializzare, è necessario ricostruire controler logica. Penso che il codificatore XML non sia molto buono, ma non è male. È interessante :-) – Istao