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 :

La guerre des boutons


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut La guerre des boutons
    Bonjour,

    J'ai créé une classe dérivant de Jpanel permettant de coller une texture en fond et de placer deux boutons par dessus.

    Pour cela j'ai redéfini paintComponent en ordonnant d'une part l'insertion de l'image de fond et d'autre part le rajout des boutons.

    Cependant à l'éxécution (de la superclasse qui instancie la fenetre qui inclut ce panel) les boutons ne s'affichent pas ; sauf si je redimensionne ma fenetre manuellement par un simple cliquer-glisser (non pas qu'il n'y avait pas assez de place pour mettre les boutons , car ils sont placés au milieu de la fenetre).

    Ce probleme semble disparaitre si je rajoute un validate(); mais si à l'intérieur de ma superClasse je demande de recréer une nouvelle fenetre du meme type (meme en mettant un validate()) les boutons ne s'affichent pas.(sauf si je refais un cliquer-glisser)

    Y aurait-il une étape de validation lors de l'insertion des boutons que j'aurais oubliée?

    Merci par avance.
    Akhan

    Voici le squelette du code si besoin :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    import javax.swing.*;
       import java.awt.event.*;
     
        public class PanneauActions extends JPanel{
          JButton hit,stand ;
          Image bande ;
     
           public PanneauActions(){
     
     
             Toolkit monTk = Toolkit.getDefaultToolkit();
     
             bande = monTk.getImage("images\\bande.jpg");
             hit = new JButton("hit me !");
             //...
             stand = new JButton("stand !");
             //...
     
             setVisible(true);
          }
     
           protected void paintComponent(Graphics g){
             super.paintComponent(g);
     
             add(hit);
             add(stand);    
             g.drawImage(bande,0,0,this);
     
     
          }
     
     
     
       }

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    Une simple suggestion : essaye d'ajouter les boutons dans le constructeur de ta classe.

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    bah disons que le problème c'est que cette classe panneauActions n'est instanciée qu'une seule fois pendant un tour de jeu ; alors que les boutons , eux, changent plusieurs fois : (voir le CODE plus complet)

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
       import java.awt.Font.*;
       import java.awt.*;
       import javax.swing.*;
       import java.awt.event.*;
     
        public class PanneauActions extends JPanel{
     
          JButton hit,stand,goOn,quit ;
          Image bande ;
          static boolean continuer=false ;
     
           public PanneauActions(){
           //constructeur...
          }
     
          protected void paintComponent(Graphics g){
             super.paintComponent(g);
     
             if(continuer){
                System.out.println("go on");
                remove(hit);
                remove(stand);
                add (goOn);
                add(quit);
     
             }
     
             else{
                remove(goOn);
                remove(quit);
                add(hit);
                add(stand);
     
             }
             g.drawImage(bande,0,0,this);
             this.validate();
     
          }
    }
    On peut voir ici que j'ai rajouté un validate() dans le paint ; et ca a résolu mon problème !
    Mais bon je ne suis pas fier de moi car ca ressemble plus à un tour de magie qu'autre chose.... Donc je mets le topic en "Résolu" mais si quelqu'un pouvait m'expliquer....

    Akhan

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 30/03/2008, 23h45
  2. [HTML] guerre des boutons
    Par lodan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 31/10/2006, 08h22
  3. Guerre des boutons
    Par lodan dans le forum Langage
    Réponses: 8
    Dernier message: 24/06/2006, 19h50
  4. proprietes des boutons
    Par DALI EDY dans le forum MFC
    Réponses: 2
    Dernier message: 14/02/2004, 08h22
  5. Réponses: 2
    Dernier message: 31/08/2002, 14h00

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