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

SWT/JFace Java Discussion :

Modifier le focus dans une boite de dialogue


Sujet :

SWT/JFace Java

  1. #1
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut Modifier le focus dans une boite de dialogue
    Bonjour,

    je créé une fenêtre de dialogue dans mon application, contenant au moins un onglet. Je voudrais qu'à l'ouverture de cette dialogue, le focus se mette sur le champ texte qu'elle contient plutôt que sur l'onglet.

    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 SearchDialog extends TitleAreaDialog {
     
     public SearchDialog (Shell parentShell) {
          super(parentShell);
     }
     
     protected Control createDialogArea(Composite parent) {
          Composite comp = (Composite) super.createDialogArea(parent);
          Composite container = new Composite(comp, SWT.NONE);
          container.setLayout(new GridLayout());
          container.setLayoutData(new GridData(GridData.FILL_BOTH));
     
          final CTabFolder ctFolder = new CTabFolder(container, SWT.BORDER);
          ctFolder .setLayout(new GridLayout());
          ctFolder .setLayoutData(new GridData(GridData.FILL_BOTH));
     
          final CTabItem ctabItem = new CTabItem(ctFolder, SWT.NONE);
          ctabItem.setText("Parameter");
     
          final Composite composite = new Composite(ctabFolder, SWT.NONE);
          composite.setLayout(new GridLayout());
          ctabItem.setControl(composite);
     
          Text text = new Text(composite, SWT.BORDER);
          text.setFocus();
     
          return comp;
     }
    }
    Cependant, cela ne fonctionne pas, j'ai toujours le focus sur le nom de mon onglet, et je dois faire une tabulation clavier pour me retrouver dans mon champ texte.

    Comment puis-je faire pour modifier le focus dans ma dialogue?

    D'avance merci,
    David.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

  2. #2
    Membre extrêmement actif Avatar de jojodu31
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 814
    Points
    814
    Par défaut
    Bonjour,
    as tu essayé en deux temps ? C'est à dire en effectuant le setFocus() dans un premier temps sur ton CTabFolder et ensuite ton setFocus() actuel ?

    a+,
    jojodu31
    Heureux soient les fêlés, car ils laisseront passer la lumière.

    Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  3. #3
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut
    Bonjour jojodu31,

    je viens d'essayer et j'ai toujours le même souci.
    Par contre j'ai essayer de mettre directement le contenu de mon onglet (composite) dans mon composite parent (comp), pour voir d'où le problème peut venir, et cela se passe très bien. Le souci doit venir de la gestion des tabitems. Mais je ne vois comment faire.

    David.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

  4. #4
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    L'astuce consiste à demander le focus une fois la dialogue affichée.
    En gros, tu définis ta boite de dialogue et une fois qu'elle est affichée, tu donnes le focus à ton champ Text.
    Exemple:
    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
        /**
         * {@inheritDoc}
         */
        protected Control createDialogArea(final Composite parent) {
            Composite comp = (Composite) super.createDialogArea(parent);
            Composite container = new Composite(comp, SWT.NONE);
            container.setLayout(new GridLayout());
            container.setLayoutData(new GridData(GridData.FILL_BOTH));
     
            final CTabFolder ctFolder = new CTabFolder(container, SWT.BORDER);
            ctFolder.setLayout(new GridLayout());
            ctFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
     
            final CTabItem ctabItem = new CTabItem(ctFolder, SWT.NONE);
            ctabItem.setText("Parameter");
     
            final Composite composite = new Composite(ctFolder, SWT.NONE);
            composite.setLayout(new GridLayout());
            ctabItem.setControl(composite);
     
            final Text text = new Text(composite, SWT.BORDER);
            getShell().getDisplay().asyncExec(new Runnable() {
     
                public void run() {
                    text.setFocus();
                }
     
            });
            return comp;
        }
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  5. #5
    Membre averti
    Avatar de DaveShot
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 238
    Points : 384
    Points
    384
    Par défaut
    Salut Gueritarish,

    merci c'est effectivement cela, le focus se fait bien sur le texte .

    Merci,
    David.
    - N'hésitez pas à consulter les liens vers les FAQs, les cours et tutoriels -

    Daveshot

  6. #6
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Après, je sais pas si c'est la "meilleure" solution
    C'est en tout cas une solution de contournement

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/05/2008, 15h50
  2. Caractères spéciaux dans une boite de dialogue
    Par Rafiki dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 09/03/2006, 14h05
  3. modifier la catpion d'une boite de dialogue
    Par yannickrohel dans le forum Windows
    Réponses: 2
    Dernier message: 26/01/2006, 13h39
  4. [MFC] Dessin dans une boite de dialogue .
    Par Platypus dans le forum MFC
    Réponses: 8
    Dernier message: 21/07/2005, 11h21
  5. afficher dans une boite de dialogue la valeur d'une variable
    Par micknic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/07/2005, 09h25

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