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 :

JPopupMenu - JXTreeTable


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut JPopupMenu - JXTreeTable
    bonjour,

    je cherche a améliorer mon code :

    j'ai un JXTreeTable auquel je joins un JPopupMenu, le contenu du popupmenu changer en fonction de la ou je suis.

    j'ai donc mit un ecouteur sur mon JXTree et je met a jour le popupmenu selon la ou je suis. avec cette facon il est mit a jour a chaque changement de selection meme s'il n'est pas affiché.

    ca marche pas de soucis, mais je prefererai le mettre a jour uniquement sur un click droit (au moment de son affichage).

    une idée? (pas un mouseEvent)




    le JPopupMenu :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    package altersigroot.structure.treetable;
     
    import altersigroot.ENV;
    import altersigroot.structure.ASMapContext;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JMenuItem;
    import javax.swing.JPopupMenu;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
     
    /**
     *
     * @author johann Sorel
     */
    public class ASPopupMenu extends JPopupMenu{
     
        private ASTreeTable tree;
     
        /** Creates a new instance of ASPopupMenu */
        public ASPopupMenu(ASTreeTable tree) {
            this.tree = tree;
     
            tree.getTree().addTreeSelectionListener( new ASPopTreeListener(this));
        }
     
     
    }
     
     
    class ASPopTreeListener implements TreeSelectionListener{
     
        private ASPopupMenu pop;
     
     
        public ASPopTreeListener(ASPopupMenu menu){
            pop = menu;
        }
     
        public void valueChanged(TreeSelectionEvent e) {
     
            final Object obj = e.getPath().getLastPathComponent() ;
            pop.removeAll();
     
            if( obj instanceof ASMapContextNode){
                JMenuItem mi = new JMenuItem("Activer");
                mi.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        ENV.KERNEL.setActiveMapContext( ((ASMapContextNode)obj).getContext() );
                    }
                });
                pop.add(mi);
            }else if( obj instanceof ASPackageNode){
                ...
            }else if( obj instanceof ASLayerNode){
                ...
            }
     
            pop.revalidate();
        }
     
    }

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Euh tu fais un test sur la visibilité de ton JPopUpMenu avant de faire la mise à jour (genre un appel à isVisible).

    Sinon tu passes par un AWTEventListener, (qui choppe tous les Events), tu traite celui qui t'intéresse et tu redispatche les autres.

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    bien vu,

    je n'ai pas repris l'idée, mais je fais ma mise a jour juste avant un setVisible(true);

    j'ai surchargé la méthode, marche impec.


    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JPopupMenu] Couleur d'1 JMenuItem disabled
    Par tomburn dans le forum Composants
    Réponses: 6
    Dernier message: 12/05/2005, 11h26
  2. JPopupMenu & évènement
    Par Pfeffer dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 28/04/2005, 13h24
  3. [JTree] Attacher un JPopupMenu
    Par tomca dans le forum Composants
    Réponses: 4
    Dernier message: 11/03/2005, 15h32
  4. [JPopupmenu] attendre
    Par fraoustin dans le forum Composants
    Réponses: 3
    Dernier message: 22/05/2004, 11h05
  5. [JPopupMenu] Comment recupérer le nombre de d'item ?
    Par Cyber@l dans le forum Composants
    Réponses: 2
    Dernier message: 14/05/2004, 09h22

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