Bonjour,
Mon problème est je pense assez simple. J'ai une classe startStopButton qui étend Button. Cette classe possède une donnée membre etatOn qui marche de cette manière :
- etatOn = false -> stop
- etatOn = true -> start
Je défini un constructeur par defaut qui ne reçoit aucun paramètre. Avec ce constructeur le bouton sera à "stop".
Par contre je veux un deuxième constructeur qui attend un booléen en paramètre. Si ce paramètre est à false, j'appelle le constructeur par defaut pour ne pas réécrire de code. Par contre si le paramètre est à true je veux que le bouton se crée directement à "start".
J'appelle donc "super()" après avoir testé la valeur du paramètre et mon erreur est la suivante : L'appel de super() doit être la première chose à faire.

Voici ma classe :
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
 
public class startStopButton extends Button {
 
    // Données membres
    private boolean etatOn;
 
    // Constructeur par defaut : Button stop
    public startStopButton() {
        super("Off");
        setBackground(Color.red);
        this.etatOn = false;
    }
 
    // Constructeur à un paramètre
    public startStopButton(boolean etatOn) {
        if(etatOn) {
            super("On");
            setBackground(Color.GREEN);
            this.etatOn = etatOn;
        } else {
            new startStopButton();
        }
    }
 
}
Que dois-je faire pour utiliser super après le test de mon paramètre ?