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 :

GridBagLayout : Bouton masqué.


Sujet :

AWT/Swing Java

  1. #1
    Invité
    Invité(e)
    Par défaut GridBagLayout : Bouton masqué.
    Bonjour,

    J'ai crée un JPanel qui utilise un GridBagLayout.
    J'ajoute mes différents composants dans ce panel mais un JButton n'apparait pas.

    Voici mon code :
    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
     
    public TemplatePane(RepportsTemplateBean template) {
    		this.template = template;
     
    		// Building components
    		header = new HeaderPanel("Edition d'un template");
     
    		lblFile = new JLabel("l_File");
    		fldFile = new JTextField();
    		btnFile = new JButton("b_Select");
     
    		lblDataSources = new JLabel("l_Datasources");
    		tblDataSources = new JTable();
     
    		lblOptions = new JLabel("l_Options");
    		tblOptions = new JTable();
     
    		lblName = new JLabel("l_name");
    		fldName = new JTextField();
     
    		lblDescription = new JLabel("l_Description");
    		txtDescription = new JTextArea();
     
    		lblDocuments = new JLabel("l_Documents");
    		lstDocuments = new JList();
     
    		lblSubReports = new JLabel("l_Subreports");
    		lstSubreports = new JList();
     
     
    		// Adding components to layout
    		layout = new GridBagLayout();
    		GridBagConstraints cons = new GridBagConstraints();
     
    		setLayout(layout);
    		// Heading
    		cons.fill = GridBagConstraints.HORIZONTAL;
    		cons.weightx = 3.0;
    		cons.gridwidth = GridBagConstraints.REMAINDER;
    		add(header, cons);
     
    		// File selection
    		cons.gridwidth = GridBagConstraints.RELATIVE;
    		cons.fill = GridBagConstraints.HORIZONTAL;
    		cons.anchor = GridBagConstraints.LINE_END;
    		cons.weightx = 0.0;
    		add(lblFile, cons);
     
    		cons.anchor = GridBagConstraints.CENTER;
    		cons.weightx = 1.0;
    		add(fldFile, cons);
     
    		cons.weightx = 0.0;
    		cons.fill = GridBagConstraints.NONE;
    		cons.gridwidth = GridBagConstraints.REMAINDER;
    		add(btnFile, cons);
     
     
    		setLayout(layout);
     
    	}
     
    private void add(JComponent comp, GridBagConstraints cons) {
    		layout.setConstraints(comp, cons);
    		super.add(comp);
    	}
    Mon problème est que mon 'btnFile' ne se montre pas.. J'ai bien mon 'header' sur une première ligne ensuite 'lblFile' et 'fldFile' mais 'btnFile' n'est pas la...


    Je n'ai jamais utilisé GridBagLayout autrement qu'avec un GUIBuilder mais cette fois je ne peux pas et dans le fond c'est une bonne chose puisque je suis bloqué sur ce petit truc.

    Merci

    Edit 1 : Il semble que le problème vienne de la ligne cons.gridwidth=GridBagConstraints.RELATIVE. Si je commente les lignes relatives au 'header' et celle-ci dessus, tout se passe bien...
    Mais pourquoi est-ce que je ne peux pas remettre en RELATIVE après un REMAINDER ?

    Edit 2 : Si je réinstancie un 'GridBagConstraints' après la code relatif au 'header' et que je supprimer la ligne qui met le gridwidth a RELATIVE. Tout fonctionne bien.
    C'est donc vraiment le fait de mettre le gridwidth en REMAINDER et ensuite en RELATIVE qui pose problème. Mais je ne sais toujours pas pourquoi..
    Dernière modification par Invité ; 10/10/2007 à 12h38.

  2. #2
    Membre éclairé Avatar de bassim
    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Février 2005
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 666
    Points : 695
    Points
    695
    Par défaut
    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
    cons.fill = GridBagConstraints.HORIZONTAL;
    		cons.weightx = 3.0;
    		cons.gridwidth = GridBagConstraints.REMAINDER;
    		add(header, cons);
     
    		// File selection
    		cons.gridwidth = GridBagConstraints.RELATIVE;
    		cons.fill = GridBagConstraints.HORIZONTAL;
    		cons.anchor = GridBagConstraints.LINE_END;
    		cons.weightx = 0.0;
    		add(lblFile, cons);
     
    		cons.anchor = GridBagConstraints.CENTER;
    		cons.weightx = 1.0;
    		add(fldFile, cons);
     
    		cons.weightx = 0.0;
    		cons.fill = GridBagConstraints.NONE;
    		cons.gridwidth = GridBagConstraints.REMAINDER;
    		add(btnFile, cons);
    quelques remarques:
    les poids {weightx} de tous les composants sur une même ligne additionnés entre eux doivent correspondre à 100%
    il ne faut pas oublier de spécifier les gridx et gridy qui correspondent aux différentes positions des composants.
    Where is my mind

  3. #3
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Bonjour

    Pour simplifier la vie avec le GridBagLayout il y a la class GBC du livre Au Coeur de JAVA 2.

    Exemple détailé et source ici.

    Dans la plus part des cas, on peut s'en sortir en imbriquant ces layouts moin complexe:
    BorderLayout
    BoxLayout
    GridLayout
    CardLayout
    FlowLayout

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

Discussions similaires

  1. bouton de commande sous feuille masquée
    Par brewen dans le forum Excel
    Réponses: 1
    Dernier message: 21/08/2007, 19h00
  2. bouton qui envoye une valeur masquée
    Par Oxygan dans le forum Langage
    Réponses: 3
    Dernier message: 23/05/2007, 16h55
  3. Bouton qui masque un calque et en affiche un autre
    Par Carter dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/11/2006, 17h10
  4. [PHP-JS] Bouton radio & champ masqué
    Par eown dans le forum Langage
    Réponses: 4
    Dernier message: 18/04/2006, 11h06
  5. spécifier la taille d'un bouton avec un gridbaglayout
    Par koolway dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 22/03/2006, 17h56

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