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 :

Action enabled | disabled


Sujet :

AWT/Swing Java

  1. #1
    Invité
    Invité(e)
    Par défaut Action enabled | disabled
    Bonjour,

    Pour une application j'ai créer une JMenuBar, dans cette JMenuBar j'ai des JMenuItem qui sont crées sur base d'AsbtractAction.
    Pour créer ces actions je passe par une 'ActionFactory' qui reçoit une valuer d'une enum.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JMenu edit = new JMenu("Edit");
    edit.add(new JMenuItem(ActionFactory.createAction(Actions.Cut))); // Actions est une enum
    Tout marche trés bien sauf que certaines actions devraient-êtres grisés (setEnabled(false)) en fonction du contexte.


    -> Qui dois gérer l'état (actif|inactif) d'une action, ou placer le code qui décide l'état ?
    ->
    Comment faites-vous pour gérer cela ?


    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    L'idéal est toujours de jouer avec les actions, donc d'utiliser les méthodes setEnabled(boolean) de l'action.

    Si tu touches uniquement à cet état enabled ou non, généralement un JMenuItem devient grisé, tout comme un bouton. Pour autant qu'ils contiennent l'action en question.

    À mon avis, tu utilises ActionFactory.createAction(...).setEnabled(false); non ? Si c'est le cas, ça ne marchera pas, puisque ActionFactory crée une action nouvelle. Ce sera donc celle-la qui sera désactivée, et non l'action que tu as utilisée dans ton JMenuItem.

    Un petit conseil, puisque tu écris tes actions comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JMenu edit = new JMenu("Edit");
    JMenuItem monMenuItem = edit.add(ActionFactory.createAction(Actions.Cut)); // Actions est une enum
    Et tu n'es même pas obligé de mettre la partie "JMenuItem monMenuItem =".

  3. #3
    Invité
    Invité(e)
    Par défaut
    Super pour le conseil du add. je ne connaissais pas cette particularité.
    avant je fesais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JMenuItem monMenuItem;
    edit.add(monMenuItem = new JMenuItem(ActionFactory.createAction(Actions.Cut)))
    Mais je ne crois pas que tu aie compris ma question.


    Mon problème est que l'état de mes actions doit pouvoir changer, évoluer dans le contexte de l'application (si pas de fichier ouvert, pas besoin de sauver)
    Mais comment faire pour changer cet état dynamiquement car une fois que mes actions sont crées...
    Ha non, je n'ai rien dis.

    En fait lorsque je fais quelque chose qui dois changer une action, il me suffit de demander à ma factory l'action voulue et de changer son état
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void doSomething(Object withMe) {
      // Faire qq chose avec withMe qui nécessite d'activer l'action edit
      actionFactory.createAction(Actiosn.Edit).setEnabled(true);
    }
    Désolé du dérangement.

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    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
    Action cutAction;
    Action pasteAction;
     
    void initComponents() {
        // Mes actions
        cutAction = ActionFactory.createAction(Actions.Cut);
        pasteAction = ActionFactory.createAction(Actions.Paste);
     
        // Mes boutons
        JButton cutButton = new JButton(cutAction);
        JButton pasteButton = new JButton(pasteAction);
     
        // Mon menu
        JMenu edit = new JMenu("Edit");
        edit.add(cutAction);
        edit.add(pasteAction);
     
        updateComponents();
    }
     
    void updateComponents() {
        cutAction.setEnabled(canCut);
        pasteAction.setEnabled(canPaste);
    }
    Et t'appelle #updateComponents() à chaque fois qu'un évènement doit provoquer la mise à jour des status des boutons.

Discussions similaires

  1. enabled-disabled d'un champ
    Par steph_1 dans le forum MFC
    Réponses: 1
    Dernier message: 15/02/2008, 09h49
  2. Enable/Disable Network Adapter
    Par tintin22 dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 29/12/2007, 15h51
  3. Enabled / disabled sur un button
    Par Sephiroth Lune dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/11/2006, 15h44
  4. [MFC] SDI Enable/disable élement d'un menu
    Par Nergaahl dans le forum MFC
    Réponses: 4
    Dernier message: 12/06/2006, 10h49
  5. enable/disable listbox avec radiobouton
    Par -DeN- dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/02/2006, 17h05

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