web-dev-qa-db-fra.com

Comment savoir quel objet a actuellement le focus

J'ai quelques TextFields dans mon Frame. Je veux savoir quel TextField a actuellement le focus. Comment puis-je trouver cette information?

24
Talha Bin Shakir

JFrame.getFocusOwner() (hérité de Window.getFocusOwner() ) doit renvoyer une référence au composant ayant le focus. getMostRecentFocusOwner() pourrait également présenter un intérêt.

30
Rob
KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner()
26
Peter Tseng

Regardez aussi le javax.swing.FocusManager

3
Carlos Heuberger

getFocusOwner () renverra le composant enfant actuellement ciblé. 

Mais vous devez vérifier si c'est un JTextField. D'autres composants, tels que les boutons, peuvent être ciblés s'ils existent également dans votre cadre.

2
euphoria83

KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
ne fonctionnera pas sur les threads. Donc, si votre application appelle un nouveau thread et que ce thread a son propre cadre/fenêtre, etc., il ne pourra pas obtenir le propriétaire du focus de ce thread. Utilisez plutôt: KeyboardFocusManager.getCurrentKeyboardFocusManager().getGlobalFocusOwner();

1
Scouser

Ce tutoriel devrait être très utile pour comprendre le focus.

1
Mitch Flax

Chaque JComponent a une méthode hasFocus que vous pouvez utiliser pour vérifier si elle a le focus. Cependant, cela a été modifié et vous devez maintenant utiliser isFocusOwner.

Alors parcourez tous les champs de texte de votre cadre et vérifiez si chacun d’entre eux est isFocusOwner en appelant cette méthode. 

Vous pouvez également obtenir le propriétaire de la focalisation à travers le cadre. 

1
Uri

Vous pouvez également écouter le changement de propriété approprié dans le gestionnaire de focus du clavier:

KeyboardFocusManager.getCurrentKeyboardFocusManager().addPropertyChangeListener("focusOwner", new PropertyChangeListener() {
    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        System.out.println(evt.getNewValue());
    }
});

Cela génère le propriétaire du focus lorsque vous interagissez avec les composants Swing et est utile pour le débogage des problèmes de focus en général.

0
predi