Debutant en programmation. Je fais une application avec une interface graphique un "peu évolué"(enfin pour moi).

J'ai une JFrame principal avec une barre de menu , son gestionnaire est un CardLayout pour me permetre d'afficher mes différents panneaux a la demande
(quand l'utilisateur clic sur tel option du menu).
Bon c'est peut etre pas la meilleur solution mais c'est que j'ai choisi.

Donc j'ai différent panel que le CardLayout se charge d'afficher , chaque JPanel prend tjrs tout l'espace du container de la frame.
J'ai utilisé ca pour le CardLayout(0,0) comme constructeur.
Chaque panel a son propre affichage.

Un de mes Panel me pose Probleme. Sur ce panel je veux afficher une JTable
qui est dans un JScrollPane , 2 sous JPanel et unJTextArea.
Les différents layout me donnant pas satisfaction j'utilse donc le sois-disant plus compliqué GridBagLayout.
Mais le resultat est vraiment decevant.....

Voici le 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
class PanProjet extends JPanel 
{
 
    private Fenetre fenetre;
    private JTable tableau;
    private final String [] nomsColonnes={"Code","Nom","Dur\u00e9e","Predecesseurs","Date debut","Date fin"};
    private Object [][] cellules= new Object [30][6];
    private JTextArea description;
    private JPanel titre;
    private JPanel utilisateur;
 
    public PanProjet(Fenetre fenetre)                                      
    {                                       
        //this.fenetre = fenetre;
 
        /********Layout diposition des élements graphique***/
 
        GridBagLayout grille = new GridBagLayout(); // place les éléments selon une grille imaginaire(la mienne 3C-4L) 
        GridBagConstraints contraintes = new GridBagConstraints(); //contraintes pour le placement des objets
        setLayout(grille);
 
 
        titre = new JPanel();
        titre.setBackground(Color.blue);
        contraintes.gridwidth = 2; // nombre de case en largeur
        contraintes.gridheight = 1; // nombre de case en hauteur
        contraintes.gridx = 0; // emplacement de depart du composant en x (par rapport au coin sup gauche)
        contraintes.gridy = 0; // idem pour l'axe des ordonnés
        contraintes.fill = GridBagConstraints.BOTH;
        grille.setConstraints(titre,contraintes); // on donne les infos au layout
        add(titre);
 
        tableau = new JTable(cellules,nomsColonnes);
        JScrollPane aScrollPane = new JScrollPane(tableau);
        aScrollPane.setHorizontalScrollBar(new JScrollBar());
        contraintes.gridwidth = 2;
        contraintes.gridheight = 2;
        contraintes.gridx = 0;
        contraintes.gridy = 1;
        contraintes.fill = GridBagConstraints.NONE;
        grille.setConstraints(aScrollPane,contraintes);
        add(aScrollPane);
 
        description = new JTextArea();
        description.setBackground(Color.cyan);
        contraintes.gridwidth = 2;
        contraintes.gridheight = 1;
        contraintes.gridx = 0;
        contraintes.gridy = 3;
        contraintes.fill = GridBagConstraints.BOTH;
        grille.setConstraints(description,contraintes);
        add(description);
 
        utilisateur = new JPanel();
        utilisateur.setBackground(Color.green);
        contraintes.gridwidth = 1;
        contraintes.gridheight = 4;
        contraintes.gridx = 2;
        contraintes.gridy = 0;
        contraintes.fill = GridBagConstraints.BOTH;
        grille.setConstraints(utilisateur,contraintes);
        add(utilisateur);
 
}
Voila ce que j'obtient:
Nom : appli.JPG
Affichages : 104
Taille : 49,8 Ko


Mais moi je voudrais cette disposition:
Nom : dispo.JPG
Affichages : 91
Taille : 12,5 Ko

bleu = 1er Sous JPanel
vert = 2em sous JPanel
blanc = JScrollPane(JTable)
cyan = JTextArea

Et donc je vois pas ou mon code pose probleme , peutetre qu'il faut definir des tailles pour les composants mais dans ce cas la qu'elle est l'utilité du GridBagLayout.

Donc la je patoge completement!

Un autre truc que je n'arrive pas a faire sur le JScrollPane je voudrais une SCrollBar Horizontal et Une Vertical. Et que mon tableau n'affiche pas forcement a chaque fois toutes les colonnes enfin si mais que le JScrollPane les affiches pas toutes, que l'utilisateur fasse defilé avec la barre horizontal si pas assez d'espace

je sais pas si je me fais bien comprendre

Merci d'avance