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

AWT/Swing Java Discussion :

swing, zorder, paint


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut swing, zorder, paint
    Bonjour,
    je souhaite qu'un composant B, contenu dans un composant A, s'affiche après lui.(ces 2 composants sont des JPanel et j'utilise paint pour dessiner un rectangle de leur taille par exemple).
    Le problème est que, si je ne fais rien de particulier, seul le composant A s'affiche (j'imagine que paint de A est apelée aprés paint de B).
    Il n'y a plus de problème si dans la méthode paint de A, je fais: B.repaint().
    Mais j'ai peur que ca ne soit pas la meilleure solution. J'ai donc voulu utilisé les z-order, mais je comprend mal comment ca fonctionne, en effet je tombe toujours sur des exceptions...
    Sauriez vous me dire comment utiliser setComponentZorder dans ce cas précis?
    Moi, j'éssayais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class A extends JPanel{
     
    public A(){
      B b= new B(); //étend JPanel aussi
      this.setLayout(...);
      this.add(B);
      this.setComponentZOrder(this, 1); //cette ligne provoque l'erreur
      this.setComponentZOrder(b, 0);
    }
     
    public void paint(Graphics g){
      g.setColor(Color.BLACK);
      g.fillRect(0,0,this.getWidth(), this.getHeight() );
    }
     
     
    }
    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Citation Envoyé par rageice
    Bonjour,
    je souhaite qu'un composant B, contenu dans un composant A, s'affiche après lui.(ces 2 composants sont des JPanel et j'utilise paint pour dessiner un rectangle de leur taille par exemple).
    Le problème est que, si je ne fais rien de particulier, seul le composant A s'affiche (j'imagine que paint de A est apelée aprés paint de B).
    Que nenni. En fait, dans le code que tu as fourni, tu n'appelles pas super.paint() dans la methode paint() de A. Donc A ne dessine pas les composants qui lui sont ajoutés.
    Surchage plutot paintComponent().

    Citation Envoyé par rageice
    Il n'y a plus de problème si dans la méthode paint de A, je fais: B.repaint().
    Oula, faire un repaint() dans un paint, ca n'a pas de sens.

    Citation Envoyé par rageice
    Mais j'ai peur que ca ne soit pas la meilleure solution. J'ai donc voulu utilisé les z-order, mais je comprend mal comment ca fonctionne, ...
    Effectivement.
    Si un composant A contient des composants B et C, en principe, A se dessine en premier, puis demande a ses composants B et C de se dessiner.
    L'ordre de dessin entre B et C determine si B est devant C ou C devant B. Voila ce que te permet de choisir la methode setComponentZorder: l'ordre de dessin entre B et C, mais en aucun cas entre A et C ou A et B.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut re
    Ok, merci beaucoup

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

Discussions similaires

  1. [Swing] Méthode paint qui ne se lance pas
    Par Invité dans le forum Composants
    Réponses: 1
    Dernier message: 29/04/2011, 18h48
  2. Swing Paint : setComposite()
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 19
    Dernier message: 02/06/2008, 07h34
  3. Réponses: 4
    Dernier message: 20/06/2007, 12h15
  4. [Swing][Paint] Logique de dessin
    Par TylerKnoxx dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 07/04/2007, 22h49
  5. [SWING][FONT] choisir la police par défaut
    Par narmataru dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 21/02/2003, 10h35

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