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

2D Java Discussion :

Superposer des composants graphiques sur un dessin2d


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par défaut Superposer des composants graphiques sur un dessin2d
    salut a tous
    g essayé de tracer dans une JPanel une cercle qui se situe en arriere plan ,et quelques Jbuton en premier plan.

    Mais lors de l'execution le Jbuton se mait en arriere plan
    et le cercle on premier plan(->inversement dans l ordre). :

    Pourriez vous m'indiquer comment je peut fixer la supperposition des composants sur un dessin 2d dans une JPanel.
    Mes remerciements .

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Salut,
    On peut voir la méthode paint de ton JPanel ? Intuitivement j'aurais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void paint(Graphics g) {
      g.drawEllipse(...);
      super.paint(g); //appelle le paint de JPanel, qui va peindre les boutons par dessus le cercle.
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre éprouvé
    Avatar de narkotik
    Inscrit en
    Mai 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 117
    Par défaut
    j'ai deja eu ce genre de probleme avec des listes déroulantes
    si mes souvenirs sont bons il faut que tu fasses un revalidate() sur ton objet puis un repaint() et la tu verras ca devrait marcher, en fait c'est parce que ton composant est considéré comme trop "léger" et il se fait passer par dessus par le dessin qui lui a plus de "poids"

  4. #4
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Citation Envoyé par narkotik
    j'ai deja eu ce genre de probleme avec des listes déroulantes
    si mes souvenirs sont bons il faut que tu fasses un revalidate() sur ton objet puis un repaint() et la tu verras ca devrait marcher, en fait c'est parce que ton composant est considéré comme trop "léger" et il se fait passer par dessus par le dessin qui lui a plus de "poids"
    Tu confondrais pas un peu avec le problème de poid entre swing et awt? C'est un problème que j'ai eu avec la création d'un lecteur vidéo. Si jamais il y a une méthode simple pour résoudre ce problème, c'est : JPopupMenu.setDefaultLightWeightPopupEnabled(false);

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Si tu as fait un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /** @inheritDoc
    */
    @Override public void paint(Graphics g) { 
      super.paint(g); // Effectivement ca va peindre les bouttons sous l'ellipse car paint() appelle entre autre paintChildren()
      g.drawEllipse(...); 
    }
    C'est donc bien normal. Tu peux donc faire ce que te conseilles xavlours ; mais Je pense surtout que tu n'as pas fait attention que, quand tu travailles avec des composant Swing, c'est paintComponent() et non-pas paint() que tu dois surcharger en general :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /** @inheritDoc
    */
    @Override protected void paintComponent(Graphics g) { 
      super.paintComponent(g);  
      g.drawEllipse(...); 
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Afficher des lignes/graphique sur une form
    Par Jinx_ dans le forum Débuter
    Réponses: 4
    Dernier message: 10/02/2008, 15h28
  2. Réponses: 4
    Dernier message: 03/07/2007, 09h42
  3. Sérialisation des composants graphiques
    Par sironimo dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 23/01/2007, 11h35
  4. Récupération des composants DOS sur les CD de Windows Vista
    Par koKoTis dans le forum Windows Vista
    Réponses: 2
    Dernier message: 09/09/2006, 21h56
  5. Activer et désactiver des composant graphiques?
    Par redabadache3 dans le forum Débuter
    Réponses: 1
    Dernier message: 16/08/2005, 17h50

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