IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Applets Java Discussion :

[ActionListener] JButton et actionPerformed


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Leoxp
    Invité(e)
    Par défaut [ActionListener] JButton et actionPerformed
    Salut à tous !

    Je suis débutant en JAVA, mais pas en programmation. Pourtant, avec Java je rencontre de grandes difficultés que je n'ai jamais rencontré avec les autres languages. A savoir : à chaque nouvelle ligne de code, une erreur et des heures de galère !

    J'ai parcouru en long et en large tutoriels et faq (sûrement mal visiblement).

    Voici mon problème :

    • J'ai un bouton
    • Je souhaite associer un événement à mon bouton.


    Alors oui c'est fort simple ! Mais n'y a-t-il pas un moyen d'implémenter un événement en java sans créer une nouvelle classe ? Car si j'ai 150 boutons dans mon appli j'aurais 150 classes différentes ?

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public class explorateur extends JApplet {
      private JButton b1 = new JButton("Quitter");
     
      public void init() {
    	Container cp = getContentPane();
    	cp.setLayout(new FlowLayout());
     
    	b1.addActionListener(new ActionListener(){
    	   public void actionPerformed(ActionEvent e) {
    		System.exit(0);
    	   }
    	});
    	cp.add(b1);
      }
     
      public static void main(String[] args) {
        run(new explorateur(), 300, 500);
      }
     
      public static void run(JApplet applet, int width, int height) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(applet);
        frame.setSize(width, height);
        applet.init();
        applet.start();
        frame.setVisible(true);
      }
    }
    Si quelqu'un avait un tuyau, ça serait bien sympa

  2. #2
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    La solution que tu utilises (classe anonyme) est une bonne solution pour générer un code lisible et simple. Tu ne créé pas explicitement une classe, mais une classe va être générée à la compilation.

    Sinon tu peux toujours implémenter l'interface ActionListener à ta classe et gérer ensuite dans la méthode actionPerformed les actions à effectuer en fonction de quel bouton a été appuyé. Tu peux le connaitre grace à la méthode getSource() de l'objet ActionEvent.

  3. #3
    Leoxp
    Invité(e)
    Par défaut
    Oui mais l'ennui ici c'est que ce bout de code ne marche pas.

    Il me retourne une erreur de ce type là à l'exécution (erreur qui passe sans problèmes à la compilation) :

    Exception in thread "main" java.lang.NoClassDefFoundError: explorateur$1
    Et cela vient précisément de cette partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    b1.addActionListener(new ActionListener(){
       public void actionPerformed(ActionEvent e) {
    	System.exit(0);
       }
    });
    Je pense qu'il ne doit pas aimer cette façon de faire. Pourtant je me vois mal faire autrement...

  4. #4
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Ce code est une applet. Comment l'exécutes-tu ? Depuis l'applet viewer ? Depuis un browser web ? Si c'est le cas il faut
    • soit faire un jar de toutes tes classes compilées, y compris les classes anonymes
    • soit mettre toutes les classes au même endroit

  5. #5
    Leoxp
    Invité(e)
    Par défaut
    Oui il s'agit d'un applet. Je l'exute depuis appletviewer ou depuis firefox.

    Mais dans tous les cas c'est le même problème. Sur firefox, avec la console java, il me rajoute même :

    Exception in thread "thread applet-explorateur.class-1" java.lang.NoClassDefFoundError: explorateur$1
    pourquoi "explorateur$1" ? Alors que j'ai bien mis à la compilation, lors de la création de l'archive et dans toutes mes commandes "explorateur".

  6. #6
    Membre Expert
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Par défaut
    Le fichier explorateur$1.class est un fichier généré automatiquement par le compilateur pour représenter ta classe anonyme. Ce fichier doit être présent dans le classpath lors de l'exécution de l'applet.

    Le message d'erreur est assez parlant de lui-même : il ne trouve pas cette classe. Il y a donc un problème de ce côté la. Essayes de créer un jar de ton application.

Discussions similaires

  1. [JButton] ActionListenner, ActionPerformed
    Par dalydh dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 21/04/2013, 22h30
  2. Problème gestion actionListener pour JButton
    Par cedricbr dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 26/05/2006, 16h39
  3. JButton et Actionlistener
    Par Zobbiwan dans le forum Composants
    Réponses: 3
    Dernier message: 16/12/2005, 00h28
  4. [débutant][swing][JButton][ActionListener]
    Par cmoa59 dans le forum Composants
    Réponses: 6
    Dernier message: 25/05/2005, 15h19
  5. [JButton] ActionListenner, ActionPerformed
    Par ArchFolken dans le forum Composants
    Réponses: 6
    Dernier message: 04/05/2004, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo