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 :

Positionnement d'un composant dans un JRootPane, APRES l'avoir ajouté


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut Positionnement d'un composant dans un JRootPane, APRES l'avoir ajouté
    Bonjour,

    Je suis en train d'implémenter un drag 'n drop sur une application et j'ai un problème dans ma méthode chargée de l'initialiser : le composant implements déplacé disparait dans certains cas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getTasDrag() : extends JPanel implements Transferable
    getRootPane() : extends JFrame // en théorie...
    Ce qui ne fonctionne pas (le composant disparait) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    getRootPane().add(getTasDrag());
    getTasDrag().setLocation(...);
    getRootPane().repaint();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getRootPane().add(getTasDrag());
    getTasDrag().setLocation(...);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    getTasDrag().setLocation(...);
    getRootPane().add(getTasDrag);
    getRootPane().repaint();
    La seule solution qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getTasDrag().setLocation(...);
    getRootPane().add(getTasDrag);
    Le problème c'est que je ne peux pas me satisfaire de ça, étant donné que le composant aura a être déplacé ensuite, selon les mouvements de souris.

    Si quelqu'un avait une idée de la raison de mon problème, ça m'aiderai bien ! Merci.

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Je viens d'essayer en accédant au composant racine (JFrame) directement (sans passer par la méthode getRootPane()), le comportement est le même.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Je continue mes essais : utiliser getRootPane().getContentPane() au lieu de getRootPane() ne change rien non plus.

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Je crois qu'il faut revalider ton composant parent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    getRootPane().revalidate()
    getRootPane().repaint()
    Je ne garanti rien.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    245
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 245
    Points : 106
    Points
    106
    Par défaut
    Merci ! Ca a effectivement résolu mon problème. Bon j'avoue, je n'ai pas trop compris ce qu'indique l'API à ce sujet, mais je m'en moque !

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Faire un repaint() demande simplement de redessiner tes composants, il va pas prendre en compte un changement de composants mais simplement les redessiner. Ce qui permet par exemple de raffraichir un texte qui a changé, un dessin, une icône, etc...
    Invalidate indique un changement de "structure". Revalidate() force un invalidate() puis un validate() ce qui permet de reprendre le composant "à neuf" si on veut en prenant tout en compte.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/05/2011, 11h10
  2. positionnement des composants dans une fenetre
    Par thierry_b dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 07/07/2009, 12h27
  3. Supprimer un noeud après l'avoir ajouté
    Par persia dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/04/2009, 18h12
  4. positionnement composent dans JPANEL
    Par cell dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 20/05/2008, 09h44
  5. Réponses: 5
    Dernier message: 13/06/2006, 15h14

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