Bonjour, j'aimerais savoir comment faire en JAVA pour positionner de facon absolue, les éléments ?
merci
Bonjour, j'aimerais savoir comment faire en JAVA pour positionner de facon absolue, les éléments ?
merci
Salut,
C'est possible en n'utilisant pas de LayoutManager :
Mais ce n'est pas vraiment conseillé ni portable...
Code : Sélectionner tout - Visualiser dans une fenêtre à part setLayout(null);
a++
aie pas portable....
Comment puis-je faire donc pour pouvoir placer mes élèments ?
une méthode parce que je me retrouve avec des boutons énorme etc....
Pour le moment, j'utilise les GridBagLayout
Les GridBagLayout permettent une mise en page précise, si tu as des boutons trop gros il faut jouer sur leurs poids et leur droit à s'étendre :
méthodes setWeight et setFill de la classe GBC.
Si tu peut coller ton code de mise en page on pourra te donner quelques pistes.
Il faut remanier tes layouts afin de trouver une bonne disposition et retailler tes fenetres correctement si le positionnement est assez simple (ca se fait assez rapidement).
Maintenant si le positionnement de tes boutons est assez complexe, tu as la layout gridBagLayout qui lui aussi est tres complexe d'utilisation.
Voilà un exemple qui ne marche pas :
J'aimerais que ma zone de texte prenne tout la fenêtre et que mes boutons reste aligner a droite et centré...
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 import java.awt.*; import javax.swing.*; public class main { public static void main(String[] args) { Frame frame = new Frame() ; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class Frame extends JFrame { public Frame() { setSize(400,400); setTitle("Test"); GridBagLayout layout = new GridBagLayout(); getContentPane().setLayout(layout); JTextArea text = new JTextArea(); text.setText("Salut tu vas bien ?"); getContentPane().add( text, new GBC(0,0,1,9,100,100).setFill(GBC.BOTH).setInsets(2) ); JButton bouton = new JButton("Text"); getContentPane().add( bouton, new GBC(1,4,1,1,0,0).setAnchor(GBC.CENTER).setInsets(2) ); JButton bouton2 = new JButton("Text"); getContentPane().add( bouton2, new GBC(1,5,1,1,0,0).setAnchor(GBC.CENTER).setInsets(2) ); JButton bouton3 = new JButton("Text"); getContentPane().add( bouton3, new GBC(1,6,1,1,0,0).setAnchor(GBC.CENTER).setInsets(2) ); } } class GBC extends GridBagConstraints { public GBC( int gridx, int gridy, int gridw, int gridh, int weightx, int weighty ) { this.gridx = gridx; this.gridy = gridy; this.gridwidth = gridw; this.gridheight = gridh; this.weightx = weightx; this.weighty = weighty; } public GBC setFill( int fill ) { this.fill = fill; return this; } public GBC setAnchor( int anchor ) { this.fill = anchor; return this; } public GBC setInsets(int espace) { this.insets = new Insets(espace,espace,espace,espace); return this; } }
J'ai pris un exemple simple pour montrer![]()
De plus ma question n'as rien à voir mais comment donner un effet de profondeur aux textArea ?
merci de votre aide
En jouant sur la border (cf la classe BorderFactory et la méthode setBorder de ta JTextArea)
Désolé j'avais un peu zappé ce topic, ton problème vient de l'absence de poids, voici ce que ça donne avec la classe GBC de la FAQ :
Tu peut aussi obtenir d'autres dispositions plus aérées en ancrant les 3 boutons avec CENTER ou en laissant mettant le même poids (0,1) aux trois boutons.
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 import java.awt.*; import javax.swing.*; public class main { public static void main(String[] args) { Frame frame = new Frame() ; frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } class Frame extends JFrame { public Frame() { setSize(400,400); setTitle("Test"); GridBagLayout layout = new GridBagLayout(); getContentPane().setLayout(layout); JTextArea text = new JTextArea(); text.setText("Salut tu vas bien ?"); getContentPane().add( text, new GBC(0,0,1,3) .setWeight(1,1).setFill(GBC.BOTH).setInsets(2) ); JButton bouton = new JButton("Text"); getContentPane().add( bouton, new GBC(1,0) .setWeight(0,1).setAnchor(GBC.SOUTH).setInsets(2) ); JButton bouton2 = new JButton("Text"); getContentPane().add( bouton2, new GBC(1,1) .setWeight(0,0).setAnchor(GBC.CENTER).setInsets(2) ); JButton bouton3 = new JButton("Text"); getContentPane().add( bouton3, new GBC(1,2) .setWeight(0,1).setAnchor(GBC.NORTH).setInsets(2) ); } }
Il est aussi généralement conseillé de mettre des poids en 0 et 100 histoire d'avoir un peu de souplesse si besoin.
En espérant que cette aide tardive te soit toujours utile...
Partager