CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009
-
19 juil. 2007 à 09:47
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009
-
19 juil. 2007 à 17:30
Bonjour, excusez-moi de vous déranger une nouvelle fois mais j'aimerais savoir s'il est possible de cloner une fenetre(ou plutot un JPanel) en java??
Merci d'avance.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 19 juil. 2007 à 10:13
Ben tout dépend ce que tu appelle "cloner", mais il te suffit de faire une classe étendant de JPanel, et d'y mettre tes composants dedans, et chaque "clône" serait alors une nouvelle instance de ce panel.
contentPane.add(panneau);
JPanel panneauTree = new JPanel(new BorderLayout());
JSplitPane unSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, panneauTree,panneauDroite);
panneau.add(unSplitPane);
top = new DefaultMutableTreeNode("Options");
a = new DefaultMutableTreeNode("A");
top.add(a);
DefaultMutableTreeNode a1 = new DefaultMutableTreeNode("A1");
a.add(a1);
DefaultMutableTreeNode a2 = new DefaultMutableTreeNode("A2");
a.add(a2);
DefaultMutableTreeNode b = new DefaultMutableTreeNode("B");
top.add(b);
DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("B1");
b.add(b1);
DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("B2");
b.add(b2);
tree = new JTree(top);
int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(tree,v,h);
panneauTree.add(jsp, BorderLayout.CENTER);
jtf = new JTextField("",20);
panneauTree.add(jtf,BorderLayout.SOUTH);
catch(CloneNotSupportedException e)
{
throw new InternalError(e.getMessage());
}
}
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == nouveau)
{
tree = new JTree(top);
int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(tree,v,h);
DefaultMutableTreeNode coucou = new DefaultMutableTreeNode("Nouveau");
top.add(coucou);
///////////////////////////////////////////////////////////////
// C'est ici que j'aimerais cloner la meme fenetre
panneauDroite.add("Phase1",(Component) Phase1.clone());
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 19 juil. 2007 à 10:39
Lol, ne pas confondre "membre club" qui est un rôle privilégié de Codes-Sources qui a accès à certains bonus aux administrateurs qui eux peuvent supprimer les messages du forum ;)
Il me semble qu'on t'avais déjà répondu à cette question : le JTree doit être raffraichie pour afficher les modifications :
top.UpdateUI();
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 19 juil. 2007 à 11:01
Non, l'updateUI c'est sur le JTree qu'il faut le faire, pour que la vue soit raffraichie, et non sur le Model du JTree qui lui n'est qu'une façon de stocker les données.
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009 19 juil. 2007 à 11:19
Tu veux dire que c'est dans mon ActionPerformed que la vue est rafraichie?
Tout bug en ce moment
J'arrive à créer des nouveaux dossiers mais impossible d'y mettre le meme contenu avec la methode clone, et des lors que je clic, sur "Nouveau" tout plante.chaque branche et sous-branche de l'arbre affichent la meme fenetre.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 19 juil. 2007 à 12:26
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == nouveau)
{
tree = new JTree(top);
int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(tree,v,h);
DefaultMutableTreeNode coucou = new DefaultMutableTreeNode("Nouveau");
top.add(coucou);
///////////////////////////////////////////////////////////////
// C'est ici que j'aimerais cloner la meme fenetre
panneauDroite.add("Phase1", (Component) Phase1.clone()); // a remplacer par une nouvelle instance d'un JPanel
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 19 juil. 2007 à 13:48
Pas tout a fait daccord avec toi darksidious ;o) la methode clone fait partie ;o) des attout du model de programation objet ;o) seulement il est vrai qu elle ne se prete pas trop au clonage des ihm car tres lourd a faire ;o)
et justement
l erreur du code de Cicin c est q il a cru s en sortir en apellant la methode super... ;o) rien n est reelement magique en prog objet ;o) c est tout les comportement que l on programme qui le rende magique ;o) éhhé ..
donc A toi de faire ta methode CLONE c est à cela que sert la surcharge
Ensuite je rapelle qu un clone est une copy exacte de l objet et de ses états ... et la je doute que ce soit exactement ce que tu veux!!!
en ce sens darksidious a surement raison ;o) !!! ?
Bonne chance ;o)
PS : dit donc on commence à le voir souvent ce morceau de code ;o) !! !et c est de pir en pir ;o)
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009 19 juil. 2007 à 14:08
Que veux-tu que je te dise GodConan, je suis debutant en prog donc voila je fais ce que je peux, je ne suis qu'un debutant par rapport à vous c'est pour cela que je demande de l'aide.
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 19 juil. 2007 à 14:34
;o) ... bon en fait ABANDONNE l idee de clone ;o) je me suis donc mal exprimé ;o) ...
Mon probleme pour te fournir un petit exemple c est qu il est vraiment difficile de voir ou tu veux en venir !!!?
et meme ce que tu veux obtenir!!
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009 19 juil. 2007 à 14:51
OK GodConan, je vais essayer d'être le plus explicite possible.
D'abord avant de commencer je te remercie encore une fois toi et tous les autres memebres(Twinuts,DARKSIDIOUS etc...) de lire et repondre aux multiples questions que j'ai posées depuis le début,je sais cela devient .......
Alors:
Je crée une fenêtre comme tu l'as vu dans le programme , coupé en deux :
---A Gauche , il y a un arbre avec deja deux branches A et B et deux sous branches: A->A1,A2 B->B1,B2
-- A Droite, il y a un formulaire et meme deux.
Quand je clique sur une branche , je dois avoir un formulaire(en l'occurence celui ou il y a "Nom,Prenom,... un bouton Nouveau")
Quand je clique sur une sous-branche il y a un deuxieme formulaire avec "Loisirs,Langagesinfos etc"
Jusqu'ici tout va bien
Après ce que je veux faire c'est :
Quand je clique sur Nouveau, il faut:
1-Une nouvelle branche se crée
2-Et lorsque je cliquerai sur cette nouvelle branche s'affichera le formulaire exactement identique aux autres branches d'arbres existantes.
Quand je clique sur Nouveau, une nouvelle branche se crée mais:
-- dans les sous-branches, je ne retrouve plus mon deuxieme formulaire.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 19 juil. 2007 à 15:01
Oulà oulà oulà, je n'ose comprendre !
Tu veux, si j'ai bien compris, que pour chaque noeud, avoir un panel rattaché. Jusque là ok.
Mais quel est l'intérêt d'avoir 15 panel IDENTIQUES pour 15 noeuds DIFFERENTS ?
Est-ce que ton but au final ne serait pas d'afficher des informations concernant un noeud sélectionné dans un panel ? Et pour faire ceci, tu as eu la mauvaise idée d'afficher LE panel correspondant au noeud, et masquer les autres ? Est-ce que je vois juste ?
Si c'est cà, je te déconseille très fortement de faire ceci : au lieu de masquer et afficher les panels, utilise-en qu'un qui gère l'affichage des valeurs selon le noeud sélectionné, ce sera ainsi BEAUCOUP plus simple !
CicinhoRaul
Messages postés221Date d'inscriptionlundi 18 juin 2007StatutMembreDernière intervention16 janvier 2009 19 juil. 2007 à 15:13
Il n'y a aucun intérêt de mettre 15 Panels Différents.
Mais je souhaite:
J'appui sur Nouveau donc j'ai une nouvelle branche qui se créee dans laquelle il y a le meme formulaire.
Mais ca plante qqpart car dans ma sous branche deja crée le deuxieme formulaire n'apparait meme pas.
A la fin l'ideal c'est d'etre capable de créer autant de branches que de sous-branches que veut l'utilisateur avec pour la branche un type de formulaire(Nom,Prenom...)
et pour une sous-branche un autre type de formulaire(Loisirs,Langagesinfos....)