Classe interne
Résolu
estrellas6
Messages postés
37
Statut
Membre
-
estrellas6 Messages postés 37 Statut Membre -
estrellas6 Messages postés 37 Statut Membre -
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 du téléphone - Accueil - Guide Android
- Erreur interne badoo - Forum Vos droits sur internet
- Ombre interne illustrator ✓ - Forum Illustrator
- Stockage interne autre - Forum Samsung
- Ouvrez cette page. dans le code de la page, modifiez la couleur de fond de la classe .pix. un code de 4 chiffres doit apparaître dans la grille. lequel ? ✓ - Forum Programmation
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é