public class Mdl {
private int i;
public class myAction implements ActionListener {
public void actionPerformed(ActionEvent actionEvent) {
xxxxx
}
Voici un exemple et j'aimerai pourvoir accéder dans le bloc 'xxxx' à la variable i .
Merci.
Version imprimable
public class Mdl {
private int i;
public class myAction implements ActionListener {
public void actionPerformed(ActionEvent actionEvent) {
xxxxx
}
Voici un exemple et j'aimerai pourvoir accéder dans le bloc 'xxxx' à la variable i .
Merci.
Tu peux y acceder en mettant i en protected ou public
Mdl.this.iCitation:
Envoyé par ioRekzor
si tu ne déclare pas de "i" dans ton bloc 'xxxx' tu peux même directement utiliser "i" telquel. Sinon, pour faire appel à un attribut de ta classe, comme le fait remarquer ®om, tu peux utiliser this.ta_variable. This représente l'instance de classe (objet) dans lequel tu es. Sinon je ne vois pas le rapport avec le titre ??
Le rapport je pense c'est qu'ici c'est un cas particulier où tu es dans une classe interne et que tu veux accéder à un attribut de la classe englobante (pas vraiment parente, mais c'est l'idée).Citation:
Envoyé par trax44
oups j'avais pas bien lu.
Mais c'est pas désigné comme "crade" de faire ce genre de chose ?
Pour l'implantation des contrôleurs (une classe qui implémente les Listeners), c'est pour moi la seule méthode correcte (mis à part que dans l'exemple elle devrait être private, et que myAction devrait prendre une majuscule au début).Citation:
Envoyé par trax44
(je parlais pour le fait d'utiliser une classe interne)
Sinon pour l'accès à un attribut de la classe englobante, c'est parfois nécessaire, il faut simplement faire attention aux accès concurrents.
il est aussi possible d'ajouter tous les listenner à la même classe, d'exécuter le code approprié en fonction de la source du signal
Code:
1
2
3
4
5
6
7
8 plop.addListener(this); ... public void actionPerformed(ActionEvent e){ if (e.getSource() == plop){ /*code a executer*/ } }else if (e.getSource() == plip){...}
Ca n'est pas propre, car du coup ta méthode actionPerformed est public et peut être appelée de l'extérieur, alors que ça ne devrait pas être possible.Citation:
Envoyé par trax44