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

AWT/Swing Java Discussion :

[ActionListener] mystère et boule de gomme


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut [ActionListener] mystère et boule de gomme
    bonsoir à tous,
    là j'ai vraiment besoin d'aide, même d'un avis d'expert parce que j'en perd mon latin .....
    bon je balance les bribes de codes, je commente, et je pose le blême :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try {
      AbstractMenu AM = AbstractMenu.setMenus(
        new Object [] {
    	new JMenus("name=jmMiseEnPage,text=mise en page", 
    	  new String [] {"name=jmiPages,text=Pages"}),
    	new JMenus("name=jmQuitter,text=quitter", 
    	  new String []{"name=jmiExitA,text=Application", "name=jmiExitV,text=Visuel"}
                     )// fin new JMenus 2
        }// fin tab objet
      );// fin AM
    ....................................
    AbstractMenu : classe Abstraite qui étend JMenuBar
    setMenus : méthode statique qui ajoute au JMenuBar des JMenus
    JMenus : classe qui étend JMenu
    le constructeur prend en paramètre un String, correspondant aux attributs d'un JMenu, et un tableau de String, chaque chaîne correspondant aux attributs de JMenuItem , ajouté au JMenu.
    à la sortie j'ai donc :
    System.out.println("AM : " + AM);
    me donne AM :
    pkgAbstractCompsosants.Menus[,0,0,0x0,invalid,layout=javax.swing.plaf.basic.DefaultMenuLayout,
    alignmentX=null,alignmentY=null,border=com.sun.java.swing.plaf.motif.MotifBorders$MenuBarBorder@18622f3, flags=392,maximumSize=,minimumSize=,preferredSize=,margin=,paintBorder=true]
    je contrôle mes JMenuItems( en fait des JMenus héritant nécessairement de JMenusItems .... ) en récupérant un objet par example pour le tester :
    JMenuItem jmi1 = AM.getJMenus(0, 0);
    affiché lors de l'appel de getMenus : je récupère le JMenuItem 0 du JMenu 0 de la JMenuBar AM
    item : pkgSwingComposants.JMenus[jmiPages,0,0,0x0,invalid,alignmentX=null,alignmentY=null,
    border=javax.swing.plaf.BorderUIResource$CompoundBorderUIResource@1bc16f0,flags=264,maximumSize=,minimumSize=,preferredSize=,
    defaultIcon=,disabledIcon=,disabledSelectedIcon=,
    margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=false,
    paintFocus=false,pressedIcon=,rolloverEnabled=false,
    rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Pages]
    et System.out.println("jmi1 : \n" + jmi1); me donne ainsi :
    la même chose, le composant item ci-dessus !!!
    soit, j'ajoute donc ActionListener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    jmi1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        System.out.println("actionPerformed(ActionEvent evt : " +  evt.getSource());
      }
    });
    System.out.println("ActionListener de jmi1 : \n" + jmi1.getActionListeners()[0]); me donne :
    ActionListener de jmi1 :
    pkgManipJTable.misEnPages$1@19ec4ed
    bien réel donc, je serai en droit d'attendre un passage dans actionPerformed dés que je clique sur le JMenuItem de nom jmiPages ayant pour text "Pages" ....
    oui ben non, rien ne se passe, qui peut m'expliquer s'il vous plait ?

  2. #2
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    En décomposant un peu ton code, tu pourrais y voir plus clair... C'est un peu bourrin de tout faire en une seule ligne...

  3. #3
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Par défaut
    as-tu testé en cliquant sur les autres JMenus pour voir si y'en a pas un qui fait réagir ton listener ce qui voudrait dire qu'il y'a bug quelque part dans la façon de créer tes objets ou de les recupérer ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut
    salut aDamas,
    oui et non, moi ce que je trouve un peu bourrin, c'est de réecrire chaque fois que je fais une nouvelle IG avec un JMenuBar un pavé de 30 lignes * le nombre de fois où j'aurais à créer des menus, pour instancier quelque jMenus et JMenuItems, j'essai donc de faire classes et interfaces me permettant d'écrire un équivalent en quelques lignes dans chaque nouvelle initGUI()... c'est tout ....
    là je n'ai pas détaillé les classes, méthodes et interface qui entre en ligne de compte pour arriver à ce résultat car elle me semblent bien fonctionner, j'ai bien au final avant ajout d'actionListener et à la suite de ces quelques lignes des instances de JMenuItems, la question demeure donc, qu'est-ce-qui m'échappe ?
    il est vrai que ce post s'adresse plutot à des gens qui auraient déjà rencontré le même probleme ou similaire ....
    enfin merci quand-même....

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Par défaut
    salut 0punk,
    aucun menu ne fonctionne, pourtant ils sont bien là, sélectionnables, désélectionnables à l'envie, le bug serait donc :
    comment un ActionListener affecté à une instance de JMenuItem(ou extension) çà s'est sûr :
    ActionListener de jmi1 :
    pkgManipJTable.misEnPages$1@19ec4ed
    peut ne pas fonctionner ?
    où capturer l'exception ?
    en fait, comment peut il être sans effet, ajouté au composant mais inactif ?
    çà existe pourtant pas une ActionListener.setEnabled(true);?
    je comprend plus.....

Discussions similaires

  1. [ActionListener] Evénement sur tableau de boutons
    Par frouge dans le forum Composants
    Réponses: 5
    Dernier message: 08/10/2011, 02h44
  2. Question et boule de gomme
    Par said0011 dans le forum Débuter
    Réponses: 1
    Dernier message: 06/11/2007, 19h13
  3. Réponses: 1
    Dernier message: 03/09/2006, 23h35
  4. [débutant][swing][JButton][ActionListener]
    Par cmoa59 dans le forum Composants
    Réponses: 6
    Dernier message: 25/05/2005, 15h19
  5. [C#] [WinForms] GDI et ses mystères
    Par stailer dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/10/2004, 18h27

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