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

 Java Discussion :

Probleme pour placer mes composants avec gridbaglayout


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 56
    Par défaut Probleme pour placer mes composants avec gridbaglayout
    Bonjour,
    voici mon probleme, j'ai des difficultés a placé mes différents composants sur le gridBagLayout et je ne comprend pas trop pourquoi ca ne fonctionne pas...
    Es-ce normal que je dois jouer avec les propriétés insets pour que les composants ne se mette pas au centre?
    Actuellement mes composants sont un peu eparpillé partout et je dois jouer avec insets pour qu'il se mette plus ou moins ou il faut...
    Et pour mon logo j'ai du utiliser une contraire fill en la mettant a both et mettre le weightx et weighy à 1 pour qu'il affiche mon image correctement
    Si quelqu'un savait eclairé ma lanterne
    Merci d'avance
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package clientmsn;
     
    /**
     *
     * @author zoners
     */
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.GridBagLayout;
     
     
     
    /**
     *
     * @author zoners
     */
    import java.awt.FlowLayout;
    import java.awt.GridBagConstraints;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import javax.swing.ImageIcon;
    import javax.swing.JLabel;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JTextField;
     
    public class Acceuil extends JFrame
    {
        private JButton bouton;
        private JButton bouton2;
        private JLabel label;
        private JTextField loginField;
        private JTextField passwordField;
     
    	public Acceuil()
            {
    		super();
    		build();//On initialise notre fenêtre
    	}
     
    	private void build(){
    		setTitle("Client msn CoRed"); //On donne un titre à l'application
    		setSize(850,700); //On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
    		setResizable(false); //On interdit la redimensionnement de la fenêtre
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
                    this.setContentPane(buildContentPane());
            }
    	//...
     
    	private JPanel buildContentPane()
            {
                //Menu
                MenuAction menuAction = new MenuAction();
                JMenuBar menuBar = new JMenuBar();
                JMenu menu1 = new JMenu("Fichier");
     
                JMenuItem menu11 = new JMenuItem("menu1");
                menu11.addActionListener(menuAction.menu1);
                menu1.add(menu11);
     
                JMenuItem menu12 = new JMenuItem("menu2");
                menu12.addActionListener(menuAction.menu2);
                menu1.add(menu12);
     
                menuBar.add(menu1);
     
                JMenu menu2 = new JMenu("?");
                JMenuItem aPropos = new JMenuItem("A propos");
                aPropos.addActionListener(menuAction.menu3);
                menu2.add(aPropos);
                menuBar.add(menu2);
     
                JMenuItem menu21 = new JMenuItem("menu4");
                menu21.addActionListener(menuAction.menu4);
                menu2.add(menu21);
                menuBar.add(menu2);
                setJMenuBar(menuBar);
                //FIN MENU
                JPanel panelPrincipal = new JPanel();
                panelPrincipal.setLayout(new GridBagLayout());
     
     
                Logo logo=new Logo();
                GridBagConstraints cLogo = new GridBagConstraints();
                cLogo.gridheight=1;
                cLogo.gridwidth=1;
                cLogo.gridx=0;
                cLogo.gridy=0;
                cLogo.weightx=1;
                cLogo.weighty=1;
                cLogo.insets=new Insets(140,350,20,350);
                cLogo.fill=GridBagConstraints.BOTH;
                panelPrincipal.add(logo,cLogo);
     
                JLabel login=new JLabel("Login");
              GridBagConstraints cLogin = new GridBagConstraints();
                cLogin.gridheight=1;
                cLogin.gridwidth=1;
                cLogin.gridx=0;
                cLogin.gridy=1;
                cLogin.insets=new Insets(-700,0,0,50);
                panelPrincipal.add(login,cLogin);
     
                JLabel password=new JLabel("Password");
                GridBagConstraints cPassword = new GridBagConstraints();
                cPassword.gridx=0;
                cPassword.gridy=2;
                panelPrincipal.add(password,cPassword);
     
                loginField = new JTextField("Taper ici votre login");
                loginField.setColumns(30);
                GridBagConstraints cLoginField = new GridBagConstraints();
                 cLoginField.gridheight=1;
                 cLoginField.gridwidth=GridBagConstraints.REMAINDER;
                cLoginField.gridx=2;
                cLoginField.gridy=1;
                cLoginField.insets=new Insets(-700,-300,0,0);
                panelPrincipal.add(loginField,cLoginField);
     
                passwordField = new JTextField("Taper ici votre mot de passe");
                GridBagConstraints cPasswordField = new GridBagConstraints();
    	    cPasswordField.gridx=2;
                cPasswordField.gridy=2;
                panelPrincipal.add(passwordField,cPasswordField);
     
     
                JLabel nouveauCompte=new JLabel("Nouveau Compte");
                GridBagConstraints cNouveauCompte = new GridBagConstraints();
                cNouveauCompte.gridx=2;
                panelPrincipal.add(nouveauCompte,cNouveauCompte);
     
                JLabel seConnecter=new JLabel("Se Connecter");
                GridBagConstraints cSeConnecter = new GridBagConstraints();
                cSeConnecter.gridx=3;
                cSeConnecter.gridy=3;
                panelPrincipal.add(seConnecter,cSeConnecter);
     
                Banniere banniere=new Banniere();
                GridBagConstraints cBanniere = new GridBagConstraints();
                cBanniere.gridx=3;
                cBanniere.gridy=0;
                panelPrincipal.add(banniere,cBanniere);
     
     
    		return panelPrincipal;
    	}
     
     
            class BoutonListener implements ActionListener
            {
                public void actionPerformed(ActionEvent e)
                {
                    label.setText("Résultat : Pas encore calculé");
     
                }
            }
            public JTextField getField1(){
    		return loginField;
    	}
     
    	public JTextField getField2(){
    		return passwordField;
    	}
     
    }
    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
    package clientmsn;
     
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.io.File;
    import java.io.IOException;
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
     
    class Logo extends JPanel {
     
        Image img;
     
            public Logo(){
            try {
                this.img = ImageIO.read(new File("images2.jpg"));//new Dimension(img.getWidth(null), img.getHeight(null))
                this.setPreferredSize(new Dimension(img.getWidth(null), img.getHeight(null)));
            } catch (IOException ex) {
                ex.printStackTrace();
            }
     
     
            }
     
        @Override
            public void paintComponent(Graphics g){
                            g.drawImage(img,0,0, this);
            }
    }

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Par défaut
    Salut,

    C'est un layout puissant et pas facile à prendre en main.

    Voici quelques conseils pour mieux gérer ce layout :

    1/ Utilise un seul objet GridBagConstraints, que tu utilise pour toutes les cellules. Outre le fait de ne pas instancier des objets finalement inutiles,
    cela t'obligera (un peu) à redéfinir toutes les propriétés pour chaque cellule et donc à réfléchir
    au comportement de ces cellules. Cela évite beaucoup d'oublis.
    2/ En premier lieu, il faut s'assurer que tu as définie les emplacements des composants de façon
    correct (gridx et gridy), et ensuite que tu leur as attribués le bon nombre de cellule en largeur (gridwidth) et
    en hauteur (gridheight).
    3/ L'ancre (anchor) sert a situé le composant dans la cellule (à droite, en haut, en bas à gauche, centré, etc.).
    4/ Le remplissage sert à définir l'occupation du composant en terme de dimension à l'intérieur de la cellule.
    HORIZONTAL, le composant sera redimensionné horizontalement pour qu'il occupe toute la largeur
    de la cellule. VERTICAL c'est l'inverse. BOTH c'est les 2 et NONE c'est rien, le composant se dimension
    tel qu'il est définie.
    5/ Les Insets ne sont la que pour attribuer des marges aux composants et donner un aspect plus agéable.
    En aucun cas il ne servent à gérer l'emplacement des composants.
    6/ weightx et wieghty permettent de gérer les augmentations de taille lorsque le container est redimensionné.
    1.0 signifie que la cellule sera agrandi ou rétrécie en cas d'agrandissement, 0.0 quelle sera laissé telle quelle.
    Il me semble même que tu a droit aux valeurs intérmédiaires.
    7/ Il faut de la pratique...

    Bon courage

    Voici peut-être ce que tu voulais :
    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
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
     
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.GridBagLayout;
    import java.awt.Image;
    import java.awt.FlowLayout;
    import java.awt.GridBagConstraints;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import javax.imageio.ImageIO;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.io.IOException;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
     
    public class Acceuil extends JFrame {
     
    	private JButton bouton;
    	private JButton bouton2;
    	private JLabel label;
    	private JTextField loginField;
    	private JTextField passwordField;
     
    	public static void main(String[] args) {
    		Acceuil a = new Acceuil();
    		a.pack();
    		a.setVisible(true);
    	}
     
    	public Acceuil() {
    		super();
    		build();// On initialise notre fenêtre
    	}
     
    	private void build() {
    		setTitle("Client msn CoRed"); // On donne un titre à l'application
    		setSize(850, 700); // On donne une taille à notre fenêtre
    		setLocationRelativeTo(null); // On centre la fenêtre sur l'écran
    		setResizable(false); // On interdit la redimensionnement de la fenêtre
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // On dit à
    														// l'application de se
    														// fermer lors du clic
    														// sur la croix
    		this.setContentPane(buildContentPane());
    	}
     
    	// ...
     
    	private JPanel buildContentPane() {
    		// Menu
     
    		// FIN MENU
    		JPanel panelPrincipal = new JPanel();
    		panelPrincipal.setLayout(new GridBagLayout());
     
    		Logo logo = new Logo();
    		GridBagConstraints cLogo = new GridBagConstraints();
    		cLogo.gridheight = 1;
    		cLogo.gridwidth = 1;
    		cLogo.gridx = 0;
    		cLogo.gridy = 0;
    		cLogo.weightx = 1;
    		cLogo.weighty = 1;
    		cLogo.insets = new Insets(10, 10, 10, 10);
    		cLogo.fill = GridBagConstraints.BOTH;
    		panelPrincipal.add(logo, cLogo);
     
    		JLabel login = new JLabel("Login");
    		GridBagConstraints cLogin = new GridBagConstraints();
    		cLogin.anchor = GridBagConstraints.LINE_END;
    		cLogin.gridheight = 1;
    		cLogin.gridwidth = 1;
    		cLogin.gridx = 0;
    		cLogin.gridy = 1;
    		cLogin.insets = new Insets(10, 10, 10, 10);
    		panelPrincipal.add(login, cLogin);
     
    		JLabel password = new JLabel("Password");
    		GridBagConstraints cPassword = new GridBagConstraints();
    		cPassword.anchor = GridBagConstraints.LINE_END;
    		cPassword.gridx = 0;
    		cPassword.gridy = 2;
    		panelPrincipal.add(password, cPassword);
     
    		loginField = new JTextField("Taper ici votre login");
    		GridBagConstraints cLoginField = new GridBagConstraints();
    		cLoginField.anchor = GridBagConstraints.LINE_START;
    		cLoginField.fill = GridBagConstraints.HORIZONTAL;
    		cLoginField.gridheight = 1;
    		cLoginField.gridwidth = GridBagConstraints.REMAINDER;
    		cLoginField.gridx = 1;
    		cLoginField.gridy = 1;
    		cLoginField.insets = new Insets(10, 10, 10, 10);
    		panelPrincipal.add(loginField, cLoginField);
     
    		passwordField = new JTextField("Taper ici votre mot de passe");
    		GridBagConstraints cPasswordField = new GridBagConstraints();
    		cPasswordField.insets = new Insets(10, 10, 10, 10);
    		cPasswordField.fill = GridBagConstraints.HORIZONTAL;
    		cPasswordField.gridwidth = GridBagConstraints.REMAINDER;
    		cPasswordField.anchor = GridBagConstraints.LINE_START;
    		cPasswordField.gridx = 1;
    		cPasswordField.gridy = 2;
    		panelPrincipal.add(passwordField, cPasswordField);
     
    		JLabel nouveauCompte = new JLabel("Nouveau Compte");
    		GridBagConstraints cNouveauCompte = new GridBagConstraints();
    		cNouveauCompte.insets = new Insets(10, 10, 10, 10);
    		cNouveauCompte.gridx = 2;
    		cNouveauCompte.gridy = 3;
    		panelPrincipal.add(nouveauCompte, cNouveauCompte);
     
    		JLabel seConnecter = new JLabel("Se Connecter");
    		GridBagConstraints cSeConnecter = new GridBagConstraints();
    		cSeConnecter.insets = new Insets(10, 10, 10, 10);
    		cSeConnecter.gridx = 3;
    		cSeConnecter.gridy = 3;
    		panelPrincipal.add(seConnecter, cSeConnecter);
     
    		JTextField banniere = new JTextField();
    		banniere.setEditable(false);
    		GridBagConstraints cBanniere = new GridBagConstraints();
    		cBanniere.gridx = 1;
    		cBanniere.gridy = 0;
    		cBanniere.gridwidth = GridBagConstraints.REMAINDER;
    		cBanniere.fill = GridBagConstraints.BOTH;
    		cBanniere.insets = new Insets(10, 10, 10, 10);
    		panelPrincipal.add(banniere, cBanniere);
     
    		return panelPrincipal;
    	}
     
    	class BoutonListener implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			label.setText("Résultat : Pas encore calculé");
     
    		}
    	}
     
    	public JTextField getField1() {
    		return loginField;
    	}
     
    	public JTextField getField2() {
    		return passwordField;
    	}
     
    }
     
    class Logo extends JPanel {
     
    	Image img;
     
    	public Logo() {
    		try {
    			this.img = ImageIO.read(new File("graf10.gif"));// new
    																// Dimension(img.getWidth(null),
    																// img.getHeight(null))
    			this.setPreferredSize(new Dimension(img.getWidth(null), img
    					.getHeight(null)));
    		} catch (IOException ex) {
    			ex.printStackTrace();
    		}
     
    	}
     
    	@Override
    	public void paintComponent(Graphics g) {
    		g.drawImage(img, 0, 0, this);
    	}
    }

Discussions similaires

  1. [Smarty] Un probleme pour passer des variables avec Smarty
    Par aztec dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 31/03/2008, 15h01
  2. Réponses: 1
    Dernier message: 14/11/2007, 13h11
  3. Python probleme pour traitement fichier Xml avec l'API dom
    Par chenimitz dans le forum Général Python
    Réponses: 11
    Dernier message: 30/10/2007, 19h34
  4. Probleme pour lancer un .sh avec cron
    Par Devether dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 06/09/2007, 10h48
  5. probleme pour tracer une ligne avec OleExcel
    Par blondelle dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/08/2006, 19h10

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