Bonjour,
J'ai crée un JPanel et j'ai mis quelque éléments dedans centré verticalement. Cependant, j'aimerais qu'il y ait des espaces entre chaque éléments, mais je ne sais pas quel propriété utilisé pour le faire...
merci
a+
Bonjour,
J'ai crée un JPanel et j'ai mis quelque éléments dedans centré verticalement. Cependant, j'aimerais qu'il y ait des espaces entre chaque éléments, mais je ne sais pas quel propriété utilisé pour le faire...
merci
a+
les Jpanel ne gerent pas la position des éléments, c'est les Layout qui font ca
Tu peux utiliser un XYLayout();
Je te donne le code d'un XYLayout() que j'ai amélioré puisque tu ne pouvais positionner que 100 composants :
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 import java.awt.*; import javax.swing.*; import java.util.*; class XYLayout implements LayoutManager { Dimension size; private JComponent[] components; private int[] componentX; private int[] componentY; private int[] componentH; private int[] componentW; private int numComponents = 0; public XYLayout(int width, int height) { size = new Dimension(width, height); components = new JComponent[0]; componentX = new int[0]; componentY = new int[0]; componentW = new int[0]; componentH = new int[0]; } public int getIDComponent(JComponent comp){ int retour = -1; for(int i=0;i<components.length;i++){ if(comp==components[i]) { retour=i; i=components.length; } } return retour; } public int[] getDefinition(int id){ int retour[] = new int[4]; retour[0]=componentX[id]; retour[1]=componentY[id]; retour[2]=componentW[id]; retour[3]=componentH[id]; return retour; } public void setDefinition(int id,int[] param){ componentX[id]=param[0]; componentY[id]=param[1]; componentW[id]=param[2]; componentH[id]=param[3]; } public void setSize(Dimension s) { size = s; } public Dimension getSize() { return size; } public void addLayoutComponent(String n, Component c) { try{ int longueur = components.length+1; int[] componentXTemp = new int[longueur], componentYTemp = new int[longueur], componentWTemp = new int[longueur], componentHTemp = new int[longueur]; JComponent[] componentsTemp = new JComponent[longueur]; for(int i=0;i<longueur-1;i++){ componentsTemp[i]=components[i]; componentXTemp[i]=componentX[i]; componentYTemp[i]=componentY[i]; componentWTemp[i]=componentW[i]; componentHTemp[i]=componentH[i]; } componentsTemp[numComponents]= (JComponent)c; StringTokenizer st = new StringTokenizer(n,","); componentXTemp[numComponents] = Integer.parseInt(st.nextToken()); componentYTemp[numComponents] = Integer.parseInt(st.nextToken()); componentWTemp[numComponents] = Integer.parseInt(st.nextToken()); componentHTemp[numComponents] = Integer.parseInt(st.nextToken()); numComponents++; components=componentsTemp; componentX=componentXTemp; componentY=componentYTemp; componentW=componentWTemp; componentH=componentHTemp; } catch (Exception e) { e.printStackTrace(); } } public void removeLayoutComponent(Component c){ } public Dimension preferredLayoutSize(Container parent) { return size; } public Dimension minimumLayoutSize(Container parent) { return size; } public void layoutContainer(Container parent) { if(parent.countComponents()==0)return; for(int i=0;i<numComponents;i++) { components[i].reshape(componentX[i],componentY[i],componentW[i],componentH[i]); components[i].validate(); } } }
Pour l'utiliser, tu fait
Voila ;-)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 JFrame fen = new JFrame(); Container co = fen.getContentPane(); int largeur = 500, //largeur de ton composant hauteur = 300; //hauteur de ton composant co.setLayout(new XYLayout(largeur,hauteur)); fen.setBounds(0,0,largeur,hauteur); co.add("10,20,100,25",new JButton("Mon bouton")); // Tu dois entrer en paramètre la position de tes composants. // Ici, ce sera : // x = 10 // y =20 // largeur = 100 // hauteur = 25
En général les layout manager peuvent prendre en paramètre dans leur constructeur l'espace ( horizontal et vertical ) entre les différents composants qu'il contient ( appelé hgap et vgap dans la javadoc ).
Ainsi, si tu veux mettre un grand espacement ( 100 pixels par exemple ) tu peux construire tes layouts de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 BorderLayout bl=new BorderLayout(100,100); FlowLayout fl=new FlowLayout(FlowLayout.CENTER,100,100); GridLayout gl=new GridLayout(nLignes,nColonnes,100,100); etc...
Et accessoirement certains layout permettent de fixer des marges aux composants, en particulier le GridBagLayout
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager