2010-10-28 3 views
0

J'ai un problème avec le système de traversée de mise au point en Java. Lorsque je tabulation entre les composants dans un volet de mon application tout fonctionne correctement Tab déplace le focus sur le composant suivant.Java Focus Traversal vers le bouton nouvellement désactivé

Certains de mes composants effectuent une validation en cas de perte de focalisation, si la validation renvoie des erreurs, le bouton de sauvegarde des écrans est désactivé.

Mon problème se produit lorsque le composant validé est suivi par le bouton de sauvegarde.

Tab supprime le focus du composant validé et commence le processus asynchrone d'affectation mise au point à l'autre composant qui est activé (le bouton Enregistrer)

Suivant mes coups de pied de validation dans et désactive le bouton Enregistrer

Le Le processus asynchrone s'est alors terminé et tente d'assigner le focus au bouton Enregistrer maintenant désactivé. La mise au point est désormais bloquée et la mise au point ne change plus de mise au point, car aucun composant n'a réellement le focus. Est-ce que quelqu'un d'autre a rencontré ce problème, comment avez-vous résolu le problème de la validation et de la désactivation effectuées avant le début de l'événement de traversée de focalisation?

Répondre

0

Vous pouvez utiliser un InputVerifier pour valider le champ de texte. Dans ce cas, le focus sera replacé sur le champ de texte par erreur. Ou vous pouvez modifier votre programme d'écoute de mise au point pour gérer cette situation. Quelque chose comme:

FocusListener fl = new FocusAdapter() 
{ 
    public void focusLost(final FocusEvent e) 
    { 
     JTextField tf = (JTextField)e.getSource(); 

     if (tf.getDocument().getLength() < 1) 
     { 
      System.out.println("Error"); 
      button.setEnabled(false); 

      Component c = e.getOppositeComponent(); 

      if (c instanceof JButton 
      && c.isEnabled() == false) 
      { 
       tf.requestFocusInWindow(); 
      } 
     } 
     else 
      button.setEnabled(true); 
    } 
}; 
Questions connexes