Probleme de sérialisation

Probleme de sérialisation - Java - Programmation

Marsh Posté le 25-11-2004 à 21:40:42    

Bonjour :-)
voila j'essaie dans le cadre d'un projet pour mon bahut (editeur graphique) et sérialiser des objets de mon applis pour pouvoir les sauver et les récupérer plus tard.
quand j'essaie j'ai l'erreur java.io.NotSerializableException: java.awt.BasicStroke :-(
vous savez comment résoudre ce probleme ?
 
 

Code :
  1. package egraphics;
  2. import java.util.*;
  3. import java.io.Serializable;
  4. import java.awt.*;
  5. import java.util.regex.*;
  6. /**
  7. * class qui contient tout les elements à dessiner
  8. * @version 0.1
  9. */
  10. class Draw implements Serializable,Constant{
  11.     /**
  12.      *nombre de dessin
  13.      */
  14.    
  15.     static int nbDraw=0;
  16.     int nbShape=0;
  17.     /**
  18.      *vecteur contenant les formes
  19.      */
  20.    
  21.     Vector shapeList = null;
  22.     /**
  23.      * La fenetre principale
  24.      */
  25.     MainWindow main;
  26.    
  27.     /**
  28.      * Creates a new instance of Draw
  29.      * @param m la fenetre principal
  30.      */
  31.     Draw(MainWindow m) {
  32.         main = m;
  33.         shapeList = new Vector();
  34.        
  35.        
  36.     }
  37.     void addRect(MyRectangle rr){
  38.         shapeList.add(rr);
  39.         nbShape++;
  40.     }
  41.     void addEllipse(MyEllipse ee){
  42.         shapeList.add(ee);
  43.         nbShape++;
  44.     }
  45.     void addTrait(MyTrait tt){
  46.         shapeList.add(tt);
  47.         nbShape++;
  48.     }
  49.     void addText(MyText ttt){
  50.         shapeList.add(ttt);
  51.         nbShape++;
  52.     }
  53.    
  54.     /**
  55.      * ajoute un element à la liste
  56.      * @param p1 point en haute à droite de la figure
  57.      */
  58.     void addShape(Vector v,Point p1,Point p2,int h,int w){
  59.         int i;
  60.         i = main.t.getDrawType();
  61.        
  62.         switch(i){
  63.             case RECT :
  64.                
  65.                
  66.                 //on affecte le style courant
  67.                
  68.                 shapeList.add(new MyRectangle(v,p1,p2,h,w));
  69.                
  70.                 break;
  71.             case OVAL :
  72.                 //creation d'une ellipse
  73.                 shapeList.add("Ellipse" );
  74.                 break;
  75.             case TRAI :
  76.                 //creation d'un trait
  77.                 shapeList.add("Trait" );
  78.                 break;
  79.             case TEXT :
  80.                 //creation d'un text
  81.                 shapeList.add("Text" );
  82.                 break;
  83.         }
  84.        
  85.         nbShape++;
  86.     }
  87.     /**
  88.      * Supprime un element de la liste des formes
  89.      * @param i le numero dans la liste à enlever
  90.      */
  91.     void delShape(int i){
  92.        
  93.     }
  94.     /**
  95.      * dessine les formes de vector
  96.      * @param g graphique envoyé par la methode paintElement de MonCanvas
  97.      */
  98.     void drawShape(Graphics g){
  99.         String nom;
  100.        
  101.         int i=0;
  102.         MyRectangle rrr = new MyRectangle();
  103.         MyEllipse eee = new MyEllipse();
  104.         MyTrait ttt = new MyTrait();
  105.         MyText tt = new MyText();
  106.         Object o = new Object();
  107.         for(i=0;i<shapeList.size();i++){
  108.             o = shapeList.get(i);
  109.             nom = o.getClass().getName();
  110.            
  111.             if(search("MyRectangle",nom)){
  112.                 rrr = (MyRectangle) shapeList.get(i);
  113.                 rrr.iPaint(g);
  114.             }
  115.            
  116.             if(search("MyEllipse",nom)){
  117.                 eee = (MyEllipse) shapeList.get(i);
  118.                 eee.iPaint(g);
  119.             }
  120.             if(search("MyTrait",nom)){
  121.                 ttt = (MyTrait) shapeList.get(i);
  122.                 ttt.iPaint(g);
  123.                 ttt.Myinfo(i);
  124.                 System.out.println();
  125.             }
  126.              if(search("MyText",nom)){
  127.                 tt = (MyText) shapeList.get(i);
  128.                 tt.iPaint(g);
  129.                 //tt.Myinfo(i);
  130.                 System.out.println();
  131.             }
  132.             //System.out.println();
  133.             /*rrr = (MyRectangle) shapeList.get(i);
  134.             rrr.iPaint(g);
  135.             rrr.Myinfo(i); System.out.println("element "+i);*/
  136.         }
  137.      
  138.     }
  139.    
  140.     boolean search(String pp,String mm) {
  141.         Pattern p = Pattern.compile(pp);
  142.         Matcher m = p.matcher(mm); // get a matcher object
  143.         int count = 0;
  144.         while(m.find()) {
  145.            
  146.             return true;
  147.         }
  148.         return false;
  149.        
  150.     }
  151.    
  152.    
  153. }

Reply

Marsh Posté le 25-11-2004 à 21:40:42   

Reply

Marsh Posté le 25-11-2004 à 21:55:41    

"java.io.NotSerializableException: java.awt.BasicStroke", c'est pas clair?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-11-2004 à 21:56:36    

si mais y a pas un moyen de contourner ça ?

Reply

Marsh Posté le 25-11-2004 à 21:57:23    

ben tu vires ton BasicStroke [:joce]
 
... si tu veux que certains champs de tes objets ne soient pas sérializés, tu les marque transient.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-11-2004 à 22:00:57    

ha oui j'avais vu ça
du coup je l'ai mis partout devant mes BasicStrole mais ça marche toujours pas

Reply

Marsh Posté le 25-11-2004 à 22:03:39    

blueman_82 a écrit :

ça marche pas

alors ça c'est de l'error report clair et précis, tiens.
 
colles-y 2 pattes, un moteur et une pile, ça marchera.


Message édité par the real moins moins le 25-11-2004 à 22:04:00

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-11-2004 à 22:07:41    

lol oui je sais c'était pas tres pro comme rapport d'erreur loooool
en fait meme apres voir mis transient sur les BasicStroke ça me dis toujours qu'ils ne sont pas sérialisables

Reply

Marsh Posté le 25-11-2004 à 22:15:00    

c'est que t'en as d'autres mieux cachés [:itm]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed