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

Interfaces Graphiques en Java Discussion :

[FocusTraversalPolicy] et autres joyeusetés


Sujet :

Interfaces Graphiques en Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut [résolu] [FocusTraversalPolicy] et autres joyeusetés
    Hello, bon j'ai un problème à la con, je m'explique :

    J'ai un JFormattedTextfield encapsulé dans un JComponent.

    1) problème si on définit une implémentation de la classe abstraite FocusTraversalPolicy dans la frame, le component en paramètre de la methode getComponentAfter(...) qui est appelé par exemple avec la touche Tab, est le JFormattedTextField et non mon JComponent qui l'encapsule. (si je veux que ce soit transparent pour l'utilisateur c'est bien loupé)

    2) donc moi plein d'entrain je commence à coder un petit wrapper dans mon JComponent :

    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
    private class CtiFieldFocusPolicy extends FocusTraversalPolicy
        {
          public CtiFieldFocusPolicy()
           {
              super();
           }
     
          public Component getDefaultComponent(Container container)
          {
             return container.getFocusCycleRootAncestor().getFocusTraversalPolicy().
                getDefaultComponent(container.getFocusCycleRootAncestor());
          }
     
          public Component getFirstComponent(Container container)
          {
             return container.getFocusCycleRootAncestor().getFocusTraversalPolicy().
                getFirstComponent(container.getFocusCycleRootAncestor());
          }
     
          public Component getLastComponent(Container container)
          {
             return container.getFocusCycleRootAncestor().getFocusTraversalPolicy().
                getLastComponent(container.getFocusCycleRootAncestor());
          }
     
          public Component getComponentAfter(Container container, Component component)
          {
              return container.getFocusCycleRootAncestor().getFocusTraversalPolicy().
                getComponentAfter(container.getFocusCycleRootAncestor(), container);
          }
     
          public Component getComponentBefore(Container container, Component component)
          {
             return container.getFocusCycleRootAncestor().getFocusTraversalPolicy().
                getComponentBefore(container.getFocusCycleRootAncestor(), container);
          }
       }
    et au niveau de l'initialisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          this.setFocusable(true);
          this.setFocusCycleRoot(true);
          this.setFocusTraversalPolicy(new CtiFieldFocusPolicy());
    Ouf, ca marche bien avec le FocusTraversalPolicy du composant parent, nickel *content*

    Bon je teste ensuite sans avoir defini de FTP au niveau de parent, et là ca merde....le getComponentAfter appelle le getDefaultComponent (apres moults et moults tergiversations...) , et dès que j'appuie sur TAB c'est systematiquement le premier field de la frame qui prend le focus.

    J'ai besoin d'une solution !!! y'a peut etre une feinte a faire quelque part mais ou ? ... si quelqu'un a une idée ou est dejà tombé sur ce genre de ... j'y suis depuis ce matin je craque.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 28
    Points : 30
    Points
    30
    Par défaut
    En fait je pense avoir trouver la réponse, c'est à cause du SortingFocusTraversalPolicy(SFTP) qui est le FTP par defaut de JInternalFrame.

    Par defaut, avec l'attribut ImplicitDownCycleTraversal a true, le SFTP cherche dans les FTP éventuels des sous composants si un getDefaultComponent est défini, si c'est le cas il l'utilise, de ce fait dans mon problème, il appelé la methode getDefaultComponent de mon FTP spécifique qui appelle le getDefaultComponent du SFTP, d'ou le focus systématique du premier field editable de la frame.


    En mettant l'attribut ImplicitDownCycleTraversal du SFTP a false ca resoud le problème.

    CQFD 8) et merci du soutien

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut même problème
    Bonjour,
    J'ai le même problème que toi mais je n'arrive pas à touver ou mettre ImplicitDownCycleTraversal à false dans mon Jinternalframe.
    Peux-tu me montrer ton code?
    Merci d'avance

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

Discussions similaires

  1. Pointeur de fonction, Template, map et autres joyeusetés
    Par K2R Nolween dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2009, 04h14
  2. Réponses: 6
    Dernier message: 14/10/2008, 00h37
  3. Style et autres joyeusetés pour faire un menu en expander
    Par Harpist dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 19/06/2008, 14h22
  4. Vista , admin , UAC , et autres joyeusetés
    Par boulbi dans le forum EDI
    Réponses: 18
    Dernier message: 29/10/2007, 17h17
  5. Réponses: 5
    Dernier message: 18/10/2006, 20h30

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