[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:
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:
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:
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.
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:
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:
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:
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