Classe interne
Résolu/Fermé
estrellas6
Messages postés
36
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
7 mars 2014
-
6 mars 2014 à 18:43
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014 - 7 mars 2014 à 22:25
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014 - 7 mars 2014 à 22:25
A voir également:
- Classe interne
- Stockage interne - Accueil - Guide Android
- Transformer lecteur dvd interne en externe ✓ - Forum Disque dur / SSD
- Retrouver photo de classe gratuitement ✓ - Forum Vos droits sur internet
- Comment retrouver sa photo de classe ? - Forum Réseaux sociaux
- Ou peut-on retrouver d'anciennes photos d'école et d'anciens élèves ? ✓ - Forum Loisirs / Divertissements
4 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
6 mars 2014 à 19:01
6 mars 2014 à 19:01
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.
estrellas6
Messages postés
36
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
7 mars 2014
7 mars 2014 à 18:19
7 mars 2014 à 18:19
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
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 mars 2014 à 18:36
7 mars 2014 à 18:36
Pour la deuxième il faudrait voir plus de code, parce que l'on ne sait pas où est défini compteur1, en tout cas certainement pas dans Bouton1Listener donc this.compteur1 est impossible.
estrellas6
Messages postés
36
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
7 mars 2014
7 mars 2014 à 18:49
7 mars 2014 à 18:49
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é
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
7 mars 2014 à 18:54
7 mars 2014 à 18:54
Ce n'est pas Bouton1Listener.this qu'il faut mettre, c'est équivalent à this dans ton cas.
Ici c'est Fenetre.this.compteur1 qu'il faut mettre car c'est la classe Fenetre qui définit l'attribut compteur1.
Ici c'est Fenetre.this.compteur1 qu'il faut mettre car c'est la classe Fenetre qui définit l'attribut compteur1.
estrellas6
Messages postés
36
Date d'inscription
vendredi 26 juillet 2013
Statut
Membre
Dernière intervention
7 mars 2014
7 mars 2014 à 22:25
7 mars 2014 à 22:25
exacte ...
Merci beaucoup KX.
Merci beaucoup KX.