Vous devez utiliser un model-view-controller approach. Vous ne sérialisez que le modèle, pas la vue. La vue doit être remplie à partir du modèle. Sérialisation composants Swing est pas recommandé de toute façon du tout:
While Swing components do implement the Serializable interface, they are not portable between different versions of the Java Virtual Machine
En regardant ce que vous avez, vous devriez avoir quelques classes qui sont votre modèle et contiennent uniquement des données. Ces classes seront sérialisées en utilisant XStream quelque part. Vos classes Swing ont alors des méthodes pour recevoir ces classes de modèles et remplir les champs et les éditeurs. Vous pouvez ensuite étendre l'interface utilisateur, par exemple, sans devoir modifier la classe, ajouter plus de fonctionnalité ou fournir des vues différentes pour le même ensemble de données. Pour que le composant Swing puisse être plus sophistiqué, il ne doit pas stocker et charger le modèle, mais vous devez avoir une interface de contrôleur que vous transmettez au composant swing pour effectuer ces opérations. De cette façon, vous pouvez mieux tester les unités et découpler la logique de stockage de la logique de vue.
Si XStream est correctement configuré, et si vous faites attention au modèle et aux champs, il devrait être possible d'ajouter plus de champs à vos classes de modèle sans casser la compatibilité ascendante.
Je ne recommande pas d'utiliser Java Serialization de toute façon, car il n'est pas recommandé de l'utiliser pour le stockage. La sérialisation Java excelle à l'invocation de méthode à distance. Il est relativement fragile lorsque les classes de modèles changent ..
Si le bean java est nouveau et utilisé pour les données, XMLEncoder est une bonne idée. Sinon, je pense toujours que sérialiser un JComponent est en général une mauvaise pratique. –
@Mario Ortegón: Oui, je suis d'accord; mais l'homme peut voir la "version bean" d'un JComponent comme un modèle de conception: il n'y a pas d'écouteurs, par exemple, seulement couleur, fond, position ... Donc, si on veut sérialiser/désérialiser, il faut reconstruire le controler logique. Je pense que l'encodeur XML n'est pas très bon, mais ce n'est pas très mauvais. C'est intéressant :-) – Istao