GNT sans publicité, site mobile, fonctionnalitées exclusives...

[HELP] final et inner class

Le
yvon.thoravalNO-SPAM
J'ai un problème pour ajouter un Listener à un bouton, l'event handler
de ce bouton ajoutant lui-même un bouton identique avec le même
listener, je ne sais comment me sortire de ce tracas

le code, schématiquement (c'est du swt) :

final Group c2 = new Group(dialog, SWT.NULL);
[]
final Button add = new Button(c2, SWT.PUSH);
add.setText("+");
final Listener addListener = new Listener() {
public void handleEvent(Event e) {
[]
final Button add = new Button(c2, SWT.PUSH);
add.setText("+");
add.addListener(SWT.Selection, addListener);
[]
}
};
add.addListener(SWT.Selection, addListener);

Eclipse me dit que la variable locale "addListener" peut ne pas avoir
été initialisée (quel toupet))) !

Je ne peux pas redéfinir "addListener" dans cette sous-classe because of
récursivité.

Comment puis-je me sortir de là ?

--
yt
Lire les 5 réponses

Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JScoobyCed
Le #163301
Yvon Thoraval wrote:
<tentative>

private Button objTempButton = null;

private void setTempButton(Button objButtonP) {
objTempButton = objButtonP;
}

final Group c2 = new Group(dialog, SWT.NULL);
[...]
final Button add = new Button(c2, SWT.PUSH);
add.setText("+");

final Listener addListener = new Listener() {
public void handleEvent(Event e) {
[...]
final Button add = new Button(c2, SWT.PUSH);
add.setText("+");


setTempButton(add);

[...]
}
};


objTempButton.addListener(SWT.Selection,addListener);

add.addListener(SWT.Selection, addListener);


</tentative>

En cas de plusieurs Buttons, utiliser un tableau.

Cedric

yvon.thoravalNO-SPAM
Le #163230
JScoobyCed

En cas de plusieurs Buttons, utiliser un tableau.


oui, merci, il faut aabsolument que je limite le nombre possible de
boutons...


--
yt

Sébastien
Le #163226
Yvon Thoraval wrote:
J'ai un problème pour ajouter un Listener à un bouton, l'event handler
de ce bouton ajoutant lui-même un bouton identique avec le même
listener, je ne sais comment me sortire de ce tracas...

le code, schématiquement (c'est du swt) :

final Group c2 = new Group(dialog, SWT.NULL);
[...]
final Button add = new Button(c2, SWT.PUSH);
add.setText("+");
final Listener addListener = new Listener() {
public void handleEvent(Event e) {
[...]
final Button add = new Button(c2, SWT.PUSH);
add.setText("+");
add.addListener(SWT.Selection, addListener);


remplace addListener par 'this', ça devrait marcher.

pourquoi utilises-tu tout ces 'final' ?

Seb

yvon.thoravalNO-SPAM
Le #163158
Sébastien

remplace addListener par 'this', ça devrait marcher.
ah ok, merci beaucoup !

entre-temps je suis passé à une solution où je n'ajoute + de button +,
mais c'est moins élégant, on ne peut guère, après coup, que supprimer
les derniers trucs entrés...
pourquoi utilises-tu tout ces 'final' ?
Ben le final Group c2 est nécessaire ?

Les autres résultent d'un "bête" copier coller de ce qu'il y a + haut
)))

Je dois dire que justement ce matin j'ai cherché sur le net un tuto
expliquant, clairement si poss, à quoi sert ce final et quand
l'utiliser, mais je n'ai pas, encore, trouvé qqc de suffisamment
éclairant pour ma comprenotte...

--
yt

yvon.thoravalNO-SPAM
Le #163156
Sébastien
remplace addListener par 'this', ça devrait marcher.


OK, merci encore, ça ma permis de passer de ce design :

à celui-ci :

reste à peaufiner les Combos un peu étriquées...

--
yt

Publicité
Suivre les réponses
Poster une réponse
Anonyme