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 :

[Débutant] Position boutons dans GridBagLayout


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut [Débutant] Position boutons dans GridBagLayout
    Bonjour à tous et Bonne Année,

    J'essaie en vain de positionner 3 boutons dans la fenêtre de mon application avec GridBagLayout.
    Pour l'instant je n'ai placé qu'un bouton pour voir s'il est bien situé (il est au centre, alors que je pensais en haut et à gauche). Apparemment, pas le succès escompté. De plus le JPanel créé masque le rectangle que j'ai crée dans un container.
    Voici les classes:

    Main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package Logiciel;
     
    import logiciel_fenetre.Fenetre;
     
    public class Main {
     
    	public static void main(String[] args) {
     
    		new Fenetre ();
    	}
     
    }
    Fenêtre
    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
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Fenetre extends JFrame{
     
    	private Panneau pan = new Panneau();
    	private JPanel container = new JPanel();
    	//Ajout d'une barre de menu.
    	private JMenuBar menuBar = new JMenuBar();
     
    	//Ajout d'un menu.
    	private JMenu ficher = new JMenu("Ficher"),
    			aPropos = new JMenu("À propos");
     
    	private JMenuItem quitter = new JMenuItem("Quitter"),
    			aProposItem = new JMenuItem("Lisez-moi");
     
    	public Fenetre(){
    		//Création de la fenêtre.
    		this.setTitle("Logiciel");
    		this.setSize(800, 500);
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		//container.setBackground(Color.white);
    		container.setLayout(new BorderLayout());
    		container.add(pan, BorderLayout.CENTER);
     
    		this.setContentPane(container);
    		this.initMenu();
    		this.setVisible(true);
    	}
     
    	private void initMenu(){
    		//Menu ficher
    		ficher.add(quitter);
    		//Pour quitter l'application
    		quitter.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event){
    				System.exit(0);
    	}
    		});
     
    		ficher.add(quitter);
     
    		//Menu À propos
    		aPropos.add(aProposItem);
     
    		//Ajout des menus dans la barre de menus
    		menuBar.add(ficher);
    		menuBar.add(aPropos);
     
    		//Ajout de la barre de menus sur la fenêtre
    		this.setJMenuBar(menuBar);
     
    		//Le conteneur principal
    		JPanel content = new JPanel();
    		content.setPreferredSize(new Dimension(100, 120));
    		//content.setBackground(Color.WHITE);
    		//On définit le layout manager
    		content.setLayout(new GridBagLayout());
     
    		//L'objet servant à positionner les composants
    		GridBagConstraints gbc = new GridBagConstraints();
     
    		//Création de trois boutons: ouvrir, effacer, copier.
    		JButton btnouvrir = new JButton("Ouvrir");
    		JButton btncopier = new JButton("Copier");
    		JButton btneffacer = new JButton("Effacer");
     
    		//On positionne la case de départ du composant
    		gbc.gridx = 0;
    		gbc.gridy = 0;
    		//La taille en hauteur et en largeur
    		gbc.gridheight = 3;
    		gbc.gridwidth = 1;
     
    		//Bouton ouvrir.
    		btnouvrir.setPreferredSize(new Dimension(100, 40));
    		gbc.gridwidth = GridBagConstraints.FIRST_LINE_START;
    		gbc.gridwidth = GridBagConstraints.REMAINDER;
    		content.add(btnouvrir, gbc);
     
    		//On ajoute le conteneur
    		this.setContentPane(content);
     
     
    	}
    }
    Panneau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    package logiciel_fenetre;
     
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Panneau extends JPanel{
    	public void paintComponent(Graphics g){		
    		g.drawRect(400, 20, 360, 400);
     
    	}
    	}
    Merci pour vos réponses.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tout d'abord, c'est l'attribut anchor qui permet de placer un composant, pas gridwidth (qui permet d'indiquer le nombre de cases en largeur que recouvre le composant, comme le colSpan de la table html).

    Mais même avec le bon attribut, le problème est que les cases de la grille du GridBagLayout s'ajustent à la taille de leur contenu, par colonne et par ligne (la case ne sera jamais plus large que le plus large des composants de la colonne et jamais plus haut que le composant le plus haut de la ligne) : si tu n'as qu'un seul composant, la case aura sa taille, et le placement dans cette case n'aura donc aucun effet. Comme la grille complète se centre, le composant apparait centré. Si tu avais plusieurs composants dans la première colonne, de tailles différentes, ton bouton apparaitrait à gauche. Avec plusieurs composants sur la ligne de ce composant, il apparaitrait bien en haut. En bref, le paramètre anchor sert à positionner le composant dans la case où il se trouve, pas à positionner le composant dans son container. Un SpringLayout serait peut-être plus adapté pour ce que tu veux faire, mais un BoxLayout, voire un FlowLayout devrait suffir, et serait plus simple.

    Quant au fait que le panel Panneau avec ton rectangle qui serait masqué, ce n'est pas qu'il est masqué, c'est qu'il est remplacé par le panel avec les boutons : il n'y a qu'un seul content pane par fenêtre.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Bonjour Joel
    Merci pour ces précisions. J'ai recherché sur le net une méthode qui pourrait m'aider dans la suite de mon programme. Tous les exemples que j'ai lu ne ressemble pas à ce que j'aimerais faire.
    Question: est-ce-que l'on peut utiliser les méthodes des autres layout?
    Si oui ,peux-tu m'indiquer ou je peux trouver ces méthodes.
    Hormis javadoc ou je patauge.
    Merci par avance pour tes réponses.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    1. Les LayoutManager Swing sont surtout orientés application de gestion. Normalement, sauf interface farfelue, on peut tout faire avec les Layout Manager de base (bien que je trouve personnelement que le GridLayout de SWT soit bien mieux conçu que celui de Swing). Tu pourras trouver tous les exemples d'utilisation de tous les Layout Manager de base (sauf l'OverlayLayout) sur le site d'Oracle, comme par exemple sur la page A Visual Guide to Layout Managers.
    2. Il existe des gestionnaire d'agencement conçus pour faciliter certains agencements spécifiques, comme le FormLayout de JGoodies pour les formulaires, ou l'AbsoluteLayout de NetBeans, pour le non-agencement (!).
    3. Il ne faut pas oublier qu'on peut découper une interface en plusieurs panneaux ayant chacun leur gestionnaire d'agencement, ce qui est souvent nécessaire pour des interfaces de gestion.
    4. On peut, au besoin, écrire son propre Layout Manager (Voir LayoutManager, et LayoutManager2).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut boutons avec boxlayout(Box)
    Bonjour à tous,

    Je me permet de remonter le sujet car il y a du nouveau. J'ai réussie à créer un deuxième panel et a y insérer mes boutons avec BoxLayout(Box). Je n'arrive pas à redimensionner mes Boutons.
    J'ai cherché sur la toile la méthode et lu divers articles mais pour l'instant pas de succès. Pas exemple bien expliqué. Pour le moment l'interface n'est pas Jolie. Deplus je ne peux pas redimensionner les boutons.
    Y aurait-il une piste pour m'aider?
    Voici les classes:

    Main
    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
     
    package logiciel_fenetre;
     
     
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Panneau extends JPanel{
    	public void paintComponent(Graphics g){		
    		g.drawRect(400, 20, 360, 400);
     
     
    	}
    }
    Fenêtre

    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
     
    package logiciel_fenêtre;
     
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Fenetre extends JFrame{
     
    	//Création d'un panneau pour insérer un graphique.
    	private Panneau pan = new Panneau();
     
    	//Création d'un conteneur.
    	private JPanel container = new JPanel();
     
    	//Ajout d'un JPanel pour inclure la box afin de la positionner.
    	private JPanel jpl = new JPanel();
     
    	//Creation de boutons.
    	private JButton btn1 = new JButton("Ouvrir");
    	private JButton btn2 = new JButton("Copier");
    	private JButton btn3 = new JButton("Effacer");
     
    	//Création d'une box pour positionner nos boutons verticalement.
    	Box panneauBouton = Box.createVerticalBox();
     
    	//Ajout d'une barre de menu.
    	private JMenuBar menuBar = new JMenuBar();
     
    	//Ajout d'un menu.
    	private JMenu ficher = new JMenu("Ficher"),
    			aPropos = new JMenu("À propos");
     
    	private JMenuItem quitter = new JMenuItem("Quitter"),
    			aProposItem = new JMenuItem("Lisez-moi");	
     
    	public Fenetre(){
    	//Création de la fenêtre.
    	this.setTitle("Logiciel");
    	this.setSize(800, 500);
    	this.setResizable(false);
    	this.setLocationRelativeTo(null);
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		//Redimension de la box.
     
     
    		// Redimension des boutons.
    		btn1.setPreferredSize(new Dimension(100, 40));
    		btn2.setPreferredSize(new Dimension(100, 40));
    		btn3.setPreferredSize(new Dimension(100, 40));
     
    		//Position du JPanel
    		jpl.setBounds(20, 20, 360, 400);
    		jpl.setBackground(Color.BLUE);
     
    		//Ajout des JPanel dans le conteneur
    		container.add(jpl);
    		container.setLayout(new BorderLayout());
    		container.add(pan, BorderLayout.CENTER);
     
    		this.setContentPane(container);
     
    		this.initMenu();
     
    	}
     
    	private void initMenu(){
    		//Menu ficher
    		ficher.add(quitter);
    		//Pour quitter l'application
    		quitter.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event){
    				System.exit(0);
    	}
    		});
     
    		ficher.add(quitter);
     
    		//Menu À propos
    		aPropos.add(aProposItem);
     
    		//Ajout des menus dans la barre de menus
    		menuBar.add(ficher);
    		menuBar.add(aPropos);
     
    		//Ajout de la barre de menus sur la fenêtre
    		this.setJMenuBar(menuBar);
     
     
    		panneauBouton.add(btn1);
    		panneauBouton.add(Box.createVerticalStrut(45));
    		panneauBouton.add(btn2);
    		panneauBouton.add(Box.createVerticalStrut(45));
    		panneauBouton.add(btn3);
    		panneauBouton.add(Box.createGlue());
    		jpl.add(panneauBouton, BorderLayout.WEST);
     
    		//On rend la fenêtre visible.
    		this.setVisible(true);
     
    	}
    }
    Panneau

    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
     
    package logiciel_fenetre;
     
     
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Panneau extends JPanel{
    	public void paintComponent(Graphics g){		
    		g.drawRect(400, 20, 360, 400);
     
     
    	}
    }
    Merci pour toutes vos réponses

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Tu voudrais imposer une taille aux boutons, c'est ça ? Contrairement aux autres LayoutManager se fondant en général sur la taille préférentielle pour dimensionner les composants, le BoxLayout se fonde sur la taille minimale et maximale. Pour imposer une taille au composant, utilise donc tonBouton.setMaximumSize(new Dimension( largeur, hauteur));.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Merci pour ta réponse, effectivement j'ai lu sur Oracle cette méthode mais utiliser avec min. et prefered (si je ne me trompe pas) donc j'étais un peu dubitatif. Je vais de ce pas mettre en application la méthode. J'ai aussi mis du temps pour répondre car j'avais un problème pour expédier un message. A chaque fois que j' envoyais un post, le site me demandais de connecter. Apparemment tout est rentré dans l'ordre.
    Je te tiens au courant de l'évolution de mon travail.
    Encore merci.

  8. #8
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Voilà j'ai redimensionné les boutons avec la méthode que tu as préconisé mais çà n'a pas marché alors j'ai agrandi la box au dimension JPanel jpl et du coup mes boutons sont Dimensionnés. Par contre ils se sont placés en haut et à gauche. J'ai essayé BorderLayout mais ça ne va pas. Je fais de nouvelles recherches.
    A+

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Qu'est-ce ça veut dire "ça n'a pas marché" ? Quand je donne une "maximumSize" de 50x50 à un composant dans un BoxLayout, ce composant a bien une taille de 50x50. Normalement, une Box a déjà, par défaut, la taille de son conteneur : donc qu'est-ce que tu veux dire par "j'ai agrandi la box au dimension JPanel" ?
    Par ailleurs, si un jpanel est "en haut à gauche", ce n'est pas dû à son layout : le layout s'applique au contenu, pas au container auquel il est affecté.
    Si tu me montrais d'une part la maquette de l'UI que tu voudrais obtenir et d'autre part le code que tu as déjà fait, je pourrais mieux voir ce que tu cherches et pourquoi tu ne l'obtiens pas.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  10. #10
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Bonjour Joel,

    Je souligne le fait qu'un aucun je mets tes compétences professionnel en doute. Je ne suis qu'un Débutant et toi un expert. Je suis très content que tu m'aides et j'ai déjà bien appris avec toi.
    Je me suis mal exprimé, je voulais simplement te signaler que la méthode n'avais pas redimensionner les boutons. C'est après avoir donner une dim. à la box que les boutons se sont dimensionner:
    //Redimension de la box.
    panneauBouton.setPreferredSize(new Dimension(360, 400));
    Je voudrai que les boutons soient centré dans la box.

    voici le code:

    main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    package Logiciel;
     
    import logiciel_fenetre.Fenetre;
     
    public class Main {
     
    	public static void main(String[] args) {
     
    		new Fenetre ();
    	}
     
    }
    fenêtre
    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
     
    package logiciel_fenetre;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.Box;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Fenetre extends JFrame{
     
    	//Création d'un panneau pour insérer un graphique.
    	private Panneau pan = new Panneau();
     
    	//Création d'un conteneur.
    	private JPanel container = new JPanel();
     
    	//Ajout d'un JPanel pour inclure la box afin de la positionner.
    	private JPanel jpl = new JPanel();
     
    	//Creation de boutons.
    	private JButton btn1 = new JButton("Ouvrir");
    	private JButton btn2 = new JButton("Copier");
    	private JButton btn3 = new JButton("Effacer");
     
    	//Création d'une box pour positionner nos boutons verticalement.
    	Box panneauBouton = Box.createVerticalBox();
     
    	//Ajout d'une barre de menu.
    	private JMenuBar menuBar = new JMenuBar();
     
    	//Ajout d'un menu.
    	private JMenu ficher = new JMenu("Ficher"),
    			aPropos = new JMenu("À propos");
     
    	private JMenuItem quitter = new JMenuItem("Quitter"),
    			aProposItem = new JMenuItem("Lisez-moi");	
     
    	public Fenetre(){
    	//Création de la fenêtre.
    	this.setTitle("Logiciel");
    	this.setSize(800, 500);
    	this.setResizable(false);
    	this.setLocationRelativeTo(null);
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		//Redimension de la box.
    		panneauBouton.setPreferredSize(new Dimension(360, 400));
     
     
     
     
    		// Redimension des boutons.
    		btn1.setMaximumSize(new Dimension(200, 20));
    		btn2.setMaximumSize(new Dimension(200, 20));
    		btn3.setMaximumSize(new Dimension(200, 20));
     
    		//Position du JPanel
    		jpl.setBounds(20, 20, 360, 400);
    		jpl.setBackground(Color.BLUE);
     
    		//Ajout des JPanel dans le conteneur
    		container.add(jpl);
    		container.setLayout(new BorderLayout());
    		container.add(pan, BorderLayout.CENTER);
     
    		this.setContentPane(container);
     
    		this.initMenu();
     
    	}
     
    	private void initMenu(){
    		//Menu ficher
    		ficher.add(quitter);
    		//Pour quitter l'application
    		quitter.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event){
    				System.exit(0);
    	}
    		});
     
    		ficher.add(quitter);
     
    		//Menu À propos
    		aPropos.add(aProposItem);
     
    		//Ajout des menus dans la barre de menus
    		menuBar.add(ficher);
    		menuBar.add(aPropos);
     
    		//Ajout de la barre de menus sur la fenêtre
    		this.setJMenuBar(menuBar);
     
     
    		panneauBouton.add(btn1);
    		panneauBouton.add(Box.createVerticalStrut(20));
    		panneauBouton.add(btn2);
    		panneauBouton.add(Box.createVerticalStrut(20));
    		panneauBouton.add(btn3);
    		panneauBouton.add(Box.createGlue());
    		jpl.add(panneauBouton, BorderLayout.WEST);
     
    		//On rend la fenêtre visible.
    		this.setVisible(true);
     
    	}
    }
    panneau

    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
     
    package logiciel_fenetre;
     
     
    import java.awt.Graphics;
     
    import javax.swing.JPanel;
     
    @SuppressWarnings("serial")
    public class Panneau extends JPanel{
    	public void paintComponent(Graphics g){		
    		g.drawRect(400, 20, 360, 400);
     
     
    	}
    }
    j'espère que tu as le fichier joint.
    A+
    Images attachées Images attachées  

  11. #11
    Membre à l'essai
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Je n'ai pas de réponses. J'ai fini de coder mon ui et je suis parvenu à center les Boutons. Code peut-être pas très académique mais il fonctionne.
    Merci de m'avoir aidé dans mon projet.

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

Discussions similaires

  1. [débutant] Appeler une action depuis un bouton dans une vue.
    Par Teaniel dans le forum Eclipse Platform
    Réponses: 5
    Dernier message: 11/02/2010, 16h30
  2. [MFC] Position des boutons dans un ctoolbar
    Par tyarcaouen dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2007, 09h34
  3. [Débutant] 2 boutons submit dans un formulaire
    Par stokoma1981 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 08/05/2007, 16h57
  4. [Débutant]Insertion d'un bouton dans un JFrame
    Par philDev59 dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 08/07/2006, 12h08
  5. Réponses: 14
    Dernier message: 25/06/2006, 19h18

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