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

Langage Java Discussion :

clone qui efface un JPanel


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut clone qui efface un JPanel
    Salut à tous,

    J'ai un souci avec la méthode clone().

    Je me suis créé ma propre classe héritant de JPanel et implémentant Cloneable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyCloneableJPanel extends JPanel implements Cloneable{
    	public MyCloneableJPanel(){
    		super();
    	}
     
    	public Object clone () {
    	    try  {
    	      return super.clone ();
    	    }
    	    catch (CloneNotSupportedException e) {
    	      throw new Error ("This should never happen!");
    	    }
    	  } // clone
    }
    J'ai donc une Jframe dans laquelle, je crée un MyCloneableJPanel.

    J'ai besoin de cloner ce MyCloneableJPanel et de le réutiliser dans une autre JFrame.

    Malheureusement, lorsque je fais appel à mon clone pour l'afficher, il disparait de ma première JFrame!!!!!

    Je ne comprends rien...

    Ai je oublié de faire quelque chose???

    J'espère avoir été clair
    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    je crois que en faisant super.clone dans ta méthode clone tu appelles la méthode clone de la classe Object, donc effectivement ton objet ne sais pas comment cloner un JPanel, et se serait limite a toi de le faire, par exemple en faisant (il y a surement des fautes dans le code suivant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Object clone () {
      JPanel panel = new MyCloneableJPanel(); // ou  new JPAnel();
      // boucle sur tout les composant de ton clonable panel pour les insérer dans ton nouveau panel,
    }
    mais meme a ce moment là je me demande si il ne faut pas faire aussi un clone de tous tes composants, sous peine que ce soit tes composant qui quitte ton MyCloneableJPanel pour aller dans le nouveau panel cloné.
    je ne sais pas si j'ai été clair et si j'ai raison ??

  3. #3
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut
    Tu penses que en fait, je devrais (en gros) recreer tout mon JPanel manuellement dans ma méthode clone()???
    Dans ce cas, clone n'a aucun interet!!!!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    clone fait une copie de ton objet et te renvoi sa référence.
    donc si ton objet (ton jpanel) contient lui meme des objets (qui sont sauvegarder sous forme de référence tu es d'accord ?) on copie leur référence mais pas les objets en eux mêmes...
    en fait c'est bien pour des objets ne contenant que des types primitifs...
    je t'ai mis le lien... peut etre ai je mal compris :
    http://72.5.124.55/j2se/1.4.2/docs/a...t.html#clone()

  5. #5
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut
    Je n'avais pas pensé à cela!!!
    Je vais lire l'article.

    Merci.

    Mais y aurait pas un moyen de faire cette copie plus simplement?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Par défaut
    excuses moi mais je crois qu'en fait on se complique la vie...
    pourquoi tu veux faire un clone ?
    tu n'as qu'à recréer ton MyJPanel...c'est lui qui contient tous ce que tu veux et rien ne t'empeches de l'instancier 2 fois, deplus si il a besoin de paramètres, passes les lui dans le constructeur par exemple ...
    ca te vas ?

  7. #7
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut
    Citation Envoyé par lilou77
    excuses moi mais je crois qu'en fait on se complique la vie...
    pourquoi tu veux faire un clone ?
    Pour pouvoir afficher à 2 endroits différents mon JPanel..

    Citation Envoyé par lilou77
    ca te vas ?
    Je vais faire cela même si je trouve cette solution pas très "propre".. Mais si je n'ai que ça...

    En tout cas merci beaucoup pour ton aide. C'est sympa!

  8. #8
    Membre éclairé Avatar de menuge
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    727
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2004
    Messages : 727
    Par défaut
    ok, ca marche!!

    Merci encore!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Texte défilant de bas en haut mais qui sort du JPanel
    Par womannosky dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 28/04/2009, 13h02
  2. [VBA-XLA]Formule qui efface la cellule, est ce possible?
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/06/2007, 13h51
  3. [JTable] Cellule editable qui efface mon contenu
    Par Zanton dans le forum Composants
    Réponses: 4
    Dernier message: 01/06/2006, 12h34
  4. methode get qui efface la précédente
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 31/05/2006, 00h30
  5. Effacer un JPanel
    Par Djoffr dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 16/03/2006, 16h38

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