Question

Je travaille sur une application Eclipse RCP. Dans une classe qui étend MultiPageEditorPart, je suis en train de mettre l'accent sur un champ de texte. Mais la méthode setFocus renvoie toujours false.

Qu'est-ce que je fais mal?

Le MultiPageEditor a plusieurs pages et à l'intérieur de ces pages, il y a Composite - classes. Ces classes contiennent le champ de texte.

Voici l'extrait: (errorPage est un entier, le PAGENUMBER sur lequel ma validation a trouvé l'erreur)

if(!dataValid) {
   MessageDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), "Fehler bei der Dateneingabe", stringBuilder.toString());
   this.setActivePage(errorPage);
   Composite errorComposite = (Composite) this.getControl(errorPage);
   Control[] children = errorComposite.getChildren();
   for (Control child : children) {
    if(child instanceof Form) {
     Form form = (Form) child;
     Composite body = form.getBody();
     Control[] formChildren = body.getChildren();
     for (Control formChild : formChildren) {
      if(formChild.equals(errorControl)) 
                            formChild.setFocus();
      return dataValid;
     } 
    }
   }
  }

Était-ce utile?

La solution

Le setFocus () peut retourner false dans les situations suivantes:

  1. Peut-être que contrôle est un contrôle unfocusable comme étiquette
  2. Composites tentent d'assigner l'accent à leurs enfants avant de prendre se concentrer
  3. Un contrôle ne prendra pas attention si elle est désactivée ou caché
  4. L'entrée est bloqué en raison de la modalité.

Alors je mieux vérifier, (1) Je suis sur le point installais droit de contrôle, (2) est le contrôle visible, peut-être la forme contenant le contrôle est pas dans l'onglet sélectionné. (3) est ouvert tout autre boîte de dialogue modale.

Autres conseils

Avez-vous essayé de contrôle # forceFocus ()?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top