Bonjour,

J'ai une JFrame avec comme gestionnaire un BoxLayout (axe Y).
Dedans j'ajoute différents éléments, JButton, JLabel, et un JTextArea de taille 6 lignes 20 colonnes.

Je m'attendais à ce que le JTextArea ai une largeur de 20 colonnes puisque le BoxLayout respecte les dimensions préférées des objets que l'on met dedans, hors il n'en ai rien puisque, si les bouttons ont bien une largeur limitée, les JTextArea occuppent eux toute la largeur et on un nombre de colonnes proportionnelles à la largeur, le même se pose pour la hauteur et les 6 lignes.

La question est donc pourquoi (je ne veux pas une recette de cuisine) mais je voudrais que l'on m'explique.

Je précise que je débute en Java et Swing et il se peut donc que l'erreur soit très grossière !!!

Je vous met mon code :

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
 
import javax.swing.*;
import java.awt.*;
 
public class EditeurCartes {
 
	public void construireIhm() {
		/* La fenetre principale */
		JFrame cadre=new JFrame("Editeur de cartes");
		cadre.setSize(800,600);
		cadre.getContentPane().setLayout(new BoxLayout(cadre.getContentPane(),BoxLayout.Y_AXIS));
 
		/* Les text Areas representant les 2 faces de la carte */
		JTextArea carteQuestion = new JTextArea(6,20);
		JTextArea carteReponse = new JTextArea(6,20);
 
		carteQuestion.setLineWrap(true);
		carteReponse.setLineWrap(true);
 
		/* Les ascenseur pour les text areas */
		JScrollPane ascenseurQuestion=new JScrollPane(carteQuestion);
		ascenseurQuestion.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		ascenseurQuestion.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		JScrollPane ascenseurReponse=new JScrollPane(carteReponse);
 
		/* Les labels Question :  et Reponse : */
		JLabel question = new JLabel("Question : ");
		JLabel reponse = new JLabel("Reponse : ");
 
		/* Le bouton carte suivante */
		JButton boutton = new JButton("Carte suivante");
 
		/* Ajout de tous les composant dans la fenetre principale */
 
		cadre.getContentPane().add(question);
		cadre.getContentPane().add(ascenseurQuestion);
		cadre.getContentPane().add(reponse);
		cadre.getContentPane().add(ascenseurReponse);
		cadre.getContentPane().add(boutton);
 
		cadre.setVisible(true);
 
	}
 
	public static void main(String[] args) {
		EditeurCartes editeur = new EditeurCartes();
		editeur.construireIhm();
	}
 
}
Cordialement