Bonjour, j'ai une barre de boutons et je voudrais que l'espace entre les boutons et les marges droite et gauche soient de 5px, tandis que l'espace entre les boutons seraient de 25px.
J'ai essayé avec FlowLayout, BoxLayout, etc, je n'arrive qu'à faire le même écart entre les boutons et la marge. J'ai réussi à le faire avec GridLayout, mais alors les boutons avaient la même taille, ce qui n'est pas ce que je veux. La seule solution que j'ai trouvé a été de faire un FlowLayout avec un hgap=0, et ensuite de faire un setMargin de 5 et d'ajouter un rigid area entre chaque bouton, mais je ne trouve pas cette façon de faire idéale.
Quel est le meilleur moyen de faire ce que je veux ?
Voici un code testable :
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 import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class FlowLayoutDemo extends JFrame{ FlowLayout experimentLayout = new FlowLayout(FlowLayout.LEFT, 25, 0); public FlowLayoutDemo(String name) { super(name); } public void addComponentsToPane(final Container pane) { final JPanel compsToExperiment = new JPanel(); compsToExperiment.setLayout(experimentLayout); experimentLayout.setAlignment(FlowLayout.TRAILING); compsToExperiment.add(new JButton("Button 1")); compsToExperiment.add(new JButton("Button 2")); compsToExperiment.add(new JButton("Button 3")); compsToExperiment.add(new JButton("Long-Named Button 4")); compsToExperiment.add(new JButton("5")); pane.add(compsToExperiment, BorderLayout.CENTER); } private static void createAndShowGUI() { FlowLayoutDemo frame = new FlowLayoutDemo("FlowLayoutDemo"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.addComponentsToPane(frame.getContentPane()); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }
Partager