Bonjour,

je suis confronté à un problème récurrent que je ne sais pas trop comment résoudre.

J'ai développé une interface graphique suite à un exercice trouvé sur ce site.
Les composants sont correctement placé comme je le souhaite, mais si la frame est redimensionné alors les composants changent de place.
Evidemment, une solution serait d'interdire le redimmensionnement de la frame, mais cette solution ne me plaît guère.
J'aimerais tout simplement que mon interface ne soit pas redimensionné.
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
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 
 
public class ConstraintsDefinition extends GridBagConstraints{
 
    public static final void buildConstraints(GridBagConstraints gbc,int gx,int gy,
    int gw,int gh,int wx,int wy){
        gbc.gridx=gx;
        gbc.gridy=gy;
        gbc.gridwidth=gw;
        gbc.gridheight=gh;
        gbc.weightx=wx;
        gbc.weighty=wy;
    }
}
 
public class GuiImpot extends JFrame {
    private JRadioButton rdOui;
    private JRadioButton rdNon;
    private JSpinner spinEnfants;
    private JTextField txtSalaire;
    private JLabel lblImpotPayer;
    private JTextField txtStatus;
 
    /** Creates a new instance of GuiImpot */
    public GuiImpot() {
        super("Calcul de l'impôt");
 
        //Gestionnaire de Mise en page
        GridBagLayout gridbag=new GridBagLayout();
        GridBagConstraints constraints=new GridBagConstraints();
 
        //Conteneur
        JPanel pane=new JPanel(gridbag);
        //pane.setPreferredSize(new Dimension(50,50));
 
        getContentPane().setLayout(new BorderLayout());
        add(pane,BorderLayout.CENTER);
 
        //Interface Graphique
        constraints.anchor=GridBagConstraints.WEST;
        //constraints.fill=GridBagConstraints.BOTH;
        Insets inset=new Insets(0,0,0,0);
        inset.set(5,5,5,5);
        constraints.insets=inset;
 
        //Question : Mariage
 
        JLabel lblMarie=new JLabel("Etes-vous marié(e) ?");
        ConstraintsDefinition.buildConstraints(constraints,0,0,1,1,30,100);
        gridbag.setConstraints(lblMarie,constraints);
        pane.add(lblMarie);
 
        rdOui=new JRadioButton("Oui");
        ConstraintsDefinition.buildConstraints(constraints,1,0,1,1,20,100);
        gridbag.setConstraints(rdOui,constraints);
        pane.add(rdOui);
 
        rdNon=new JRadioButton("Non");
        ConstraintsDefinition.buildConstraints(constraints,2,0,1,1,20,100);
        gridbag.setConstraints(rdNon,constraints);
        pane.add(rdNon);
 
        // Choix du nombres d'enfants
        JLabel lblNbEnfants=new JLabel("Nombres d'enfants");
        ConstraintsDefinition.buildConstraints(constraints,0,1,1,1,30,100);
        gridbag.setConstraints(lblNbEnfants,constraints);
        pane.add(lblNbEnfants);
 
        spinEnfants=new JSpinner(new SpinnerNumberModel(0,0,20,1));
        ConstraintsDefinition.buildConstraints(constraints,1,1,1,1,30,100);
        gridbag.setConstraints(spinEnfants,constraints);
        pane.add(spinEnfants);
 
        //Montant du salaire
        JLabel lblSalaire=new JLabel("Salaire Annuel");
        ConstraintsDefinition.buildConstraints(constraints,0,2,1,1,30,100);
        gridbag.setConstraints(lblSalaire,constraints);
        pane.add(lblSalaire);
 
        txtSalaire=new JTextField(10);
        ConstraintsDefinition.buildConstraints(constraints,1,2,2,1,30,100);
        gridbag.setConstraints(txtSalaire,constraints);
        pane.add(txtSalaire);
 
        JLabel lblSalaireF=new JLabel("F");
        ConstraintsDefinition.buildConstraints(constraints,3,2,1,1,10,100);
        gridbag.setConstraints(lblSalaireF,constraints);
        pane.add(lblSalaireF);
 
        //Montant de l'impot
        JLabel lblImpot=new JLabel("Impôt à payer");
        ConstraintsDefinition.buildConstraints(constraints,0,3,1,1,30,100);
        gridbag.setConstraints(lblImpot,constraints);
        pane.add(lblImpot);
 
        lblImpotPayer=new JLabel();
        ConstraintsDefinition.buildConstraints(constraints,1,3,2,1,30,100);
        gridbag.setConstraints(lblImpotPayer,constraints);
        pane.add(lblImpotPayer);
 
        JLabel lblImpotF=new JLabel("F");
        ConstraintsDefinition.buildConstraints(constraints,3,3,1,1,30,100);
        gridbag.setConstraints(lblImpotF,constraints);
        pane.add(lblImpotF);
 
        //Texte Status
        txtStatus=new JTextField(30);
        txtStatus.setEditable(false);
        ConstraintsDefinition.buildConstraints(constraints,0,4,4,1,30,100);
        gridbag.setConstraints(txtStatus,constraints);
        pane.add(txtStatus);
 
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setVisible(true);
    }
 
    public static void main(String[]args){
        new GuiImpot();
    }
}
Merci pour votre aide.
++