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
Fenêtre
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 (); } }
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
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); } }
Merci pour vos réponses.
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); } }
Partager