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

Agents de placement/Fenêtres Java Discussion :

pas voir boutons (AWT / GridBagLayout)


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    mai 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 192
    Points : 392
    Points
    392
    Par défaut pas voir boutons (AWT / GridBagLayout)
    mon problème c'est qu'avec le début de bout de code suivant, je n'ai que la Frame qui s'affiche, pas les petits boutons que je m'attendais à voir former une sorte de diagonale.

    Can you tell me why ?



    NB: les classes main et myWindow sont dans deux fichiers différents Toute la partie événementielle n'est pas là

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    import java.awt.Frame;
    import java.awt.Button;
     
    import java.awt.GridBagConstraints;
    import java.awt.LayoutManager;
    import java.awt.GridBagLayout;
     
    import java.awt.Rectangle;
    import java.awt.Point;
    import java.awt.Dimension;
     
     
     
    public class main {
      public static void main(String[] args) {
        myWindow appWin = new myWindow();
      }
    }
     
     
    public class myWindow extends Frame {
     
    	LayoutManager       oLayoutManager;
    	GridBagConstraints  oConstraints;
     
    	Button              Button1;
    	Button              Button2;
    	Button              Button3;
     
    	Frame               mainCentralFrame;
     
    	public myWindow() {
     
                    layoutManagerInit();
                    componentsAdd();
                    listenersInit();
                    windowSizeAndPlaceInit();
                    componentsLayout();
     
                    this.setVisible(true);
    	}
     
        void layoutManagerInit()
        {
          oLayoutManager   = new GridBagLayout();
          oConstraints     = new GridBagConstraints();
          oLayoutManager.layoutContainer(this);
        }
     
        void componentsAdd()
        {
          Button1 = new Button();
          Button2 = new Button();
          Button3 = new Button(); 
     
          Button1.setVisible(true);
          Button2.setVisible(true);
          Button3.setVisible(true); 
        }
     
        void windowSizeAndPlaceInit()
        {
          Point p     = new Point(200, 100);
          Dimension d = new Dimension(800, 600);
     
          Rectangle defaultBoundRect = new Rectangle(p, d);    	
          this.setBounds(defaultBoundRect);
        }
     
        void componentsLayout()
        {
          oConstraints.gridx = 0;
          oConstraints.gridy = 0;
          oConstraints.gridheight = 1;
          oConstraints.gridwidth  = 1;
     
          oLayoutManager.addLayoutComponent("machin", Button1);
     
          oConstraints.gridx = 1;
          oConstraints.gridy = 1;
     
          oLayoutManager.addLayoutComponent("bidule", Button2);
     
          oConstraints.gridx = 2;
          oConstraints.gridy = 2;
     
          oLayoutManager.addLayoutComponent("truc", Button3);
        }
     
        void listenersInit()
        {
     
        }
    }

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 481
    Points : 48 794
    Points
    48 794
    Par défaut
    tu utilise le layoutmanager à l'envers. La méthode addLayoutComponent sera appelée par la JFrame quand tu fera des appels à getComponent().add(component, constraint). De même, la méthode layoutComponent est appelé par la JFrame avant repaint(). Là ou tu l'appelle ca sert à rien, y a aucun composant. Pour créée une JFrame avec un gridbaglayout, il faut faire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    getContentPane().setLayout(new GridBagLayout());
    getContentPane().add(bouton1,oConstraints);
    //....
    Note: un classe doit toujours commencer par une majuscule, par convention
    un nom de champs / de variable commence habituellement par une minuscule.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    mai 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 192
    Points : 392
    Points
    392
    Par défaut merci
    lorsque tu dis
    Là ou tu l'appelle ca sert à rien, y a aucun composant.
    est-ce que c'est à cause d'un problème de portée des objets
    ou parce que ce n'est pas dans le bon ordre ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 481
    Points : 48 794
    Points
    48 794
    Par défaut
    tu appelle oLayoutManager.layoutContainer(this); avant d'avoir ajouté le moindrecomposant à ta fenetre, donc cette appel ne sert à rien. De plus, comme je l'ai dit, ce n'est pas à toi à faire cette appel, c'est ta JFrame qui le fera pendant le paintComponent()!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    mai 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2007
    Messages : 192
    Points : 392
    Points
    392
    Par défaut merci, je comprends mieux
    j'avais pas compris que la relation entre le layoutManager et le container était basée sur des sortes d'états à des moments précis, comme des snapshots...

    ok

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

Discussions similaires

  1. Ne pas voir les liens d'une page !
    Par nicof3 dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2006, 13h22
  2. Réponses: 4
    Dernier message: 24/11/2005, 10h34
  3. [C#] Ne pas voir une fenetre shell quand on lance un process
    Par Vins83 dans le forum Windows Forms
    Réponses: 19
    Dernier message: 24/02/2005, 13h15

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