A voir également:
- Java ihm addActionListener erreur.
- Erreur 0x80070643 - Accueil - Windows
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
2 réponses
Bon j'ai du nouveau. J'ai ajouter dans ma class Fenetre deux classes internes permettant chacune d'éxecuter une action lorsque 1 bouton (il y en a à présent 2) est écouté.
Et maintenant miracle ! il n'y a plus d'erreurs :p
J'aimerais bien comprendre quand même d'où cette erreur venait sur le addActionListener ...
Aussi, avec les deux nouvelles classes internes, maintenant, lorsqu'un bouton est écouté, je dois mettre :
"bouton1.addActionListener( new Bouton1Listener);" au lieu de "bouton1.addActionListener ( this );" pour dire que c'était la Fenetre qui écoutait le bouton1.
Seulement maintenant que Bouton1Listener est une classe interne de Fenetre, comment le programme sait que c'est encore la Fenetre qui écoute le bouton1 et pas l'objet Bouton1Listener ?
Voici sinon le code modifié de la class Fenetre :
------------------------------------------------------------------------------------------------------------------------------
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 JButton bouton1 = new JButton("bouton1");
private JButton bouton2 = new JButton("bouton2");
private JPanel container1 = new JPanel();
private JPanel container2 = new JPanel();
private JLabel label1 = new JLabel("label1");
private Panneau pan = new Panneau();
public Fenetre(){
this.setTitle("Ma première fenêtre java");
this.setSize(400, 500);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
container1.setLayout(new BorderLayout());
container1.add(label1, BorderLayout.NORTH);
label1.setHorizontalAlignment(JLabel.CENTER);
container1.add(container2, BorderLayout.SOUTH);
container2.add(bouton1);
container2.add(bouton2);
container1.add(pan, BorderLayout.CENTER);
container1.setBackground(Color.WHITE);
bouton1.addActionListener(new Bouton1Listener());
bouton2.addActionListener(new Bouton2Listener());
this.setContentPane(container1);
this.setVisible(true);
}
class Bouton1Listener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
label1.setText("Vous avez cliqué sur le bouton 1");
}
}
class Bouton2Listener implements ActionListener{
public void actionPerformed(ActionEvent e) {
label1.setText("Vous avez cliqué sur le bouton 2");
}
}
}
------------------------------------------------------------------------------------------------------------------------------
Voila j'éspère que vous pourrez m'aider à comprendre ces quelques petites choses.
Merci encore :)
Et maintenant miracle ! il n'y a plus d'erreurs :p
J'aimerais bien comprendre quand même d'où cette erreur venait sur le addActionListener ...
Aussi, avec les deux nouvelles classes internes, maintenant, lorsqu'un bouton est écouté, je dois mettre :
"bouton1.addActionListener( new Bouton1Listener);" au lieu de "bouton1.addActionListener ( this );" pour dire que c'était la Fenetre qui écoutait le bouton1.
Seulement maintenant que Bouton1Listener est une classe interne de Fenetre, comment le programme sait que c'est encore la Fenetre qui écoute le bouton1 et pas l'objet Bouton1Listener ?
Voici sinon le code modifié de la class Fenetre :
------------------------------------------------------------------------------------------------------------------------------
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 JButton bouton1 = new JButton("bouton1");
private JButton bouton2 = new JButton("bouton2");
private JPanel container1 = new JPanel();
private JPanel container2 = new JPanel();
private JLabel label1 = new JLabel("label1");
private Panneau pan = new Panneau();
public Fenetre(){
this.setTitle("Ma première fenêtre java");
this.setSize(400, 500);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
container1.setLayout(new BorderLayout());
container1.add(label1, BorderLayout.NORTH);
label1.setHorizontalAlignment(JLabel.CENTER);
container1.add(container2, BorderLayout.SOUTH);
container2.add(bouton1);
container2.add(bouton2);
container1.add(pan, BorderLayout.CENTER);
container1.setBackground(Color.WHITE);
bouton1.addActionListener(new Bouton1Listener());
bouton2.addActionListener(new Bouton2Listener());
this.setContentPane(container1);
this.setVisible(true);
}
class Bouton1Listener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
label1.setText("Vous avez cliqué sur le bouton 1");
}
}
class Bouton2Listener implements ActionListener{
public void actionPerformed(ActionEvent e) {
label1.setText("Vous avez cliqué sur le bouton 2");
}
}
}
------------------------------------------------------------------------------------------------------------------------------
Voila j'éspère que vous pourrez m'aider à comprendre ces quelques petites choses.
Merci encore :)
Personne n'a le courage de lire ces quelques lignes de code pour m'aider à trouver mon erreur (ou une notion que je ne connaitrais pas étant donné que l'erreur disparait avec des classes internes et dont j'ai posé quelques questions ci-dessus) ?
Merci d'avance. J'éspère que vous pourrez me débloquer :s.
Bonne journée !
Merci d'avance. J'éspère que vous pourrez me débloquer :s.
Bonne journée !