IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Serialisation de la classe Image


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut Serialisation de la classe Image
    Bonjour,

    J'ai deux problèmes qui se rejoignent. Je veux serialiser mon environnement de travail. J'ai un JComboBox d'images et une annotation image sur un graph jfreechart (elle a un argument image).

    Le soucis est que la classe Image n'est pas serialisable (je ne parviens d'ailleurs pas à la rendre serialisable). Du coup chaque fois que je serialise ces composants j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Invalid Image variant
    qui est générée. Les images sont de petites tailles. Existe-t-il une astuce ou une méthode pour rendre ces éléments serialisables ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Une image ne se sérialize pas, elle se sauvegarde sous forme de fichier.

    Ton problème ici est plus une histoire d'architecture. Pour moi la sérialisation n'est pas le mécanisme approprié pour faire des sauvegardes. Par exemple, la sérialisation crée des fichiers qui sont potentiellement incompatibles entre les diverses versions de java.

    De plus l'inclusion de ces images dans ta sauvegarde n'a aucun intérêt, vu que tu les as déjà à disposition.

    Que cherches tu réellement à faire par une sérialisation de ton environnement de travail? Explique nous le comportement recherché, et on pourra probablement te proposer une solution plus adaptée.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut
    Eh bien en fait l'interface utilisateur de mon logiciel est modulaire et il faut que l'utilisateur puisse récupérer la même configuration que quand il a quitté le logiciel. Du coup moi ce que je fais c'est qu'à l'arrêt je serialise l'environnement et je le déserialise au lancement.

    Le problème c'est qu'ici il y a des Images qui sont affichées sur l'interface utilisateur

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Quel niveau de modularité cherches tu à accomplir?

    Pour réaliser une interface modulaire, le mieux est de se baser sur des plateformes le permettant.

    Si ce n'est juste que l'agencement de quelques panel, tu pourrais envisager de te baser sur un framework de docking tel que MyDoggy qui offre de quoi restaurer son layout au démarrage (puis une interface basée sur du docking est amplement plus sympathique à utiliser qu'un enchevêtrement de splitpanes...

    Vu que tu utilises Swing, la façon la plus fiable serait de se baser sur la netbeans platform qui contient tout le nécessaire pour réaliser des applications modulaires et donc la configuration est persistée.



    Sinon au lieu de sérialiser l'environnement (ce qui ne sera probablement pas possible, rapport aux différentes ressources non sérialisables) tu pourrais imaginer de sérialiser uniquement les modèles des différents composants. Mais ce sera au mieux bordélique.

    Pour moi la solution serait de porter ton application vers un Framework vraiment orienté pour ce genre de choses (à savoir la Netbeans platform qui est basée sur Swing) plutôt qu'essayer de créer ton propre framework sur lequel tu risques de passer énormément de temps pour un résultat pas forcément génial.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut
    Le projet est quasiment terminé, je devrais tout refaire en passant par un framework. La serialisation semblait une meilleur option vis à vis de la quantité de travail à effectuer

  6. #6
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    En quoi consiste ta modularité?

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Citation Envoyé par Ceubex Voir le message
    Du coup chaque fois que je serialise ces composants j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Invalid Image variant
    qui est générée.
    Etonnant lorsqu'on essaye de sérialiser un objet non sérialisable on a généralement une java.io.NotSerializableException

    Sinon je ne sais pas où et comment sont tes images mais si elles implémentent RenderedImage tu peux peut être bricoler quelquechose avec ImageIO dans des méthodes writeObject et readObject

Discussions similaires

  1. Erreur class.image.config.unix & class.image.interface
    Par pucenet dans le forum Langage
    Réponses: 2
    Dernier message: 18/06/2008, 06h32
  2. classe images ne marche pas
    Par khadir dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 15/10/2007, 16h58
  3. [iText] probleme avec la classe Image
    Par etoileDesNeiges dans le forum Documents
    Réponses: 2
    Dernier message: 12/06/2007, 10h40
  4. la class image
    Par anisj1m dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 25/04/2007, 14h04
  5. [Debutant] Aide pour creer une classe image
    Par skwi6 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 08/10/2006, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo