Bonjour !

J'ai trouvé ce programme sur le web.

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
 
 
1.    import javax.swing.*; import java.awt.*;
2.    import javax.swing.event.*; import java.awt.event.*;
3.  
4.     class Fenetre extends JFrame implements ActionListener
5.     {
6.          private JButton bouton1, bouton2, bouton3, bouton4, bouton5;
7.          private JButton pre, suiv, prem, der;
8.          private JPanel panneau1, panneau2;
9.          private CardLayout pile;
10.         
11.         public Fenetre(String titre)
12.         {
13.              setTitle(titre);
14.              setSize(300, 400);
15.              Container c = getContentPane();
16.              
17.              panneau1 = new JPanel();
18.              c.add(panneau1);
19.    
20.              panneau2 = new JPanel();
21.              c.add(panneau2, "North");
22.               
23.              pile = new CardLayout(15, 15);
24.              panneau1.setLayout(pile);
25.              
26.              bouton1 = new JButton("BOUTON1");
27.              panneau1.add(bouton1,"1");
28.              bouton2 = new JButton("BOUTON2");
29.              panneau1.add(bouton2, "2");
30.              bouton3 = new JButton("BOUTON3");
31.              panneau1.add(bouton3, "3");
32.              bouton4 = new JButton("BOUTON4");
33.              panneau1.add(bouton4, "4");
34.              bouton5 = new JButton("BOUTON5");
35.              panneau1.add(bouton5, "5");
36.                            
37.              pre = new JButton("precedent");
38.              panneau2.add(pre);
39.              pre.addActionListener(this);
40.              
41.              suiv = new JButton("suivant");
42.              panneau2.add(suiv);
43.              suiv.addActionListener(this);
44.               
45.              prem = new JButton("premier");
46.              panneau2.add(prem);
47.              prem.addActionListener(this);
48.                
49.              der = new JButton("dernier");
42.              panneau2.add(der);
43.              der.addActionListener(this);
44.              setDefaultCloseOperation(3);  
45.        }    
46.                         
47.         public void actionPerformed(ActionEvent a)
48.         {
49.              JButton source = (JButton) a.getSource();
50.              
51.              if(source == pre) pile.previous(panneau1);
52.              if(source == suiv) pile.next(panneau1);
53.              if(source == prem) pile.first(panneau1);
54.              if(source == der) pile.last(panneau1);
55.         }
56.    }     
57.         public class TesterGestionnaire7
58.         {
59.             public static void main (String [] args)
60.             {
61.                 JFrame f = new Fenetre("Mise en forme");
62.                 f.setVisible(true);
63.             }
64.         }
Bien sûr, j'ai ajouté les numéros de ligne.

Ligne 24 : On appliqué au panneau1, le gestionnaire CardLayout. Donc, tous les boutons qui y sont mis seront disposé en pile. Et c'est le cas à l'exécution du programme.

Lignes 37 à 42 : on a ajouté au panneau2, les boutons pre suiv, prem et der

A l'exécution, ces boutons sont disposé façon flowLayout. Or, on n'a appliqué
aucun gestionnaire à ce panneau. DOnc c'est BorderLayout qui doit être utilisé par défaut normalement.

Pourquoi ces boutons sont-ils disposé autrement ?

compilez puis exécutez. Vous verrez bien