Classe interne
Résolu
estrellas6
Messages postés
36
Date d'inscription
Statut
Membre
Dernière intervention
-
estrellas6 Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
estrellas6 Messages postés 36 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
j'ai créé une classe interne dont voici le code:
le problème c'est que eclipse m'indique l'erreur suivante:
compteur1 cannot be resolved or is not a field
sachant que je l'ai déjà déclaré .
Merci.
j'ai créé une classe interne dont voici le code:
class Bouton1Listener implements ActionListener { public void actionPerformed(ActionEvent arg0) { if(arg0.getSource() == bouton1){ //label.setText("Vous avez cliqué sur le bouton 1"); this.compteur1++; label.setText("vous avez cliquer"+this.compteur1+"fois sur le bouton 1"); } } }
le problème c'est que eclipse m'indique l'erreur suivante:
compteur1 cannot be resolved or is not a field
sachant que je l'ai déjà déclaré .
Merci.
A voir également:
- Classe interne
- Stockage interne - Accueil - Guide Android
- Stockage interne autre - Forum Samsung
- Erreur interne badoo - Forum Vos droits sur internet
- Ombre interne illustrator ✓ - Forum Illustrator
- Retrouver la liste des élèves d'une classe - Forum Discussions générales
4 réponses
Tu l'as déclaré mais pas dans la classe interne, or this est l'objet de la classe interne.
Tu pourrais faire
Tu pourrais faire
"vous avez cliquer"+compteur1+"fois sur le bouton 1"qui devrait marcher, ou alors expliciter à quelle classe appartient this, en faisant
MaClasse.this.compteur1où "MaClasse" est la classe où tu as définis compteur1.
Merci pour ta réponse
pour la première proposition, le programme a bien fonctionné .
mais pour la seconde j'ai eu le même p
pour la première proposition, le programme a bien fonctionné .
mais pour la seconde j'ai eu le même p
j'ai essayé les deux cas:
1-
2-
et dans les 2 cas ça n'a pas marché
1-
class Bouton1Listener implements ActionListener { public void actionPerformed(ActionEvent arg0) { if(arg0.getSource() == bouton1){ private int compteur1=0; Bouton1Listener.this.compteur1++; label.setText("vous avez cliquer"+compteur1+"fois sur le bouton 1"); } } }
2-
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Fenetre extends JFrame { private Panneau pan = new Panneau(); //private Bouton bouton = new Bouton("Mon bouton"); private JButton bouton1=new JButton("bouton 1"); private JButton bouton2=new JButton("bouton 2"); private JPanel container = new JPanel(); JPanel south=new JPanel(); JLabel label =new JLabel("label"); private int compteur1=0; private int compteur2= 0; public Fenetre(){ this.setTitle("Animation"); this.setSize(300, 300); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); container.setBackground(Color.white); container.setLayout(new BorderLayout()); bouton1.addActionListener(new Bouton3Listener()); bouton1.addActionListener(new Bouton1Listener()); bouton2.addActionListener(new Bouton2Listener()); south.add(bouton1); south.add(bouton2); //Définition d'une police d'écriture Font police = new Font("Tahoma", Font.BOLD, 16); //On l'applique au JLabel label.setFont(police); //Changement de la couleur du texte label.setForeground(Color.blue); //On modifie l'alignement du texte grâce aux attributs statiques //de la classe JLabel label.setHorizontalAlignment(JLabel.CENTER); container.add(label,BorderLayout.NORTH); container.add(pan, BorderLayout.CENTER); container.add(south, BorderLayout.SOUTH); this.setContentPane(container); this.setVisible(true); /* * //On ajoute le bouton au content pane de la JFrame this.getContentPane().add(bouton); //Ajout du bouton à notre content pane pan.add(bouton); this.setContentPane(pan); */ go(); } private void go(){ //Les coordonnées de départ de notre rond int x = pan.getPosX(), y = pan.getPosY(); //Le booléen pour savoir si l'on recule ou non sur l'axe x boolean backX = false; //Le booléen pour savoir si l'on recule ou non sur l'axe y boolean backY = false; //Dans cet exemple, j'utilise une boucle while //Vous verrez qu'elle fonctionne très bien while(true){ //Si la coordonnée x est inférieure à 1, on avance if(x < 1)backX = false; //Si la coordonnée x est supérieure à la taille du Panneau moins la taille du rond, on recule if(x > pan.getWidth()-50)backX = true; //Idem pour l'axe y if(y < 1)backY = false; if(y > pan.getHeight()-50)backY = true; //Si on avance, on incrémente la coordonnée if(!backX) pan.setPosX(++x); //Sinon, on décrémente else pan.setPosX(--x); //Idem pour l'axe Y if(!backY) pan.setPosY(++y); else pan.setPosY(--y); //On redessine notre Panneau pan.repaint(); //Comme on dit : la pause s'impose ! Ici, trois millièmes de seconde try { Thread.sleep(3); } catch (InterruptedException e) { e.printStackTrace(); } } } class Bouton1Listener implements ActionListener { public void actionPerformed(ActionEvent arg0) { if(arg0.getSource() == bouton1){ //label.setText("Vous avez cliqué sur le bouton 1"); //private int compteur1=0; Bouton1Listener.this.compteur1++; label.setText("vous avez cliquer"+Bouton1Listener.this.compteur1+"fois sur le bouton 1"); } } } class Bouton2Listener implements ActionListener{ public void actionPerformed(ActionEvent e){ if(e.getSource() == bouton2){ //label.setText("Vous avez cliqué sur le bouton 2"); compteur2++; label.setText("vous avez cliquer"+compteur2+"fois sur le bouton 2"); } } } class Bouton3Listener implements ActionListener { public void actionPerformed(ActionEvent f){ System.out.println("ma classe interne numéro 3 écoute bien le bouton 1"); } } }
et dans les 2 cas ça n'a pas marché