15 votes

Mettre l'accent sur un champ de texte

J'ai une application développée dans Netbeans et je veux mettre l'accent sur un certain élément. jTextField lorsqu'un panneau est affiché. J'ai lu un certain nombre de messages et j'ai essayé plusieurs méthodes, mais aucune n'a fonctionné. L'un des principaux problèmes est de savoir où placer le code requis, qui, dans mon cas, est le suivant this.txtMessage.requestFocusInWindow();

Certains messages indiquent l'utilisation d'un Window Listener, mais comme Netbeans a généré l'interface graphique, je ne vois pas comment mettre en œuvre les interfaces car je ne peux pas modifier le code qui crée le jPANEL, etc. Tout cela est très frustrant et je ne pense vraiment pas que cela devrait être si difficile.

À titre de test, j'ai ajouté le requestFocusInWindow(); à un bouton sur le panneau et il a mis le focus sur l'entrée désirée.

1voto

SuperRetro Points 81

Pour moi, le moyen le plus simple de faire fonctionner le système est de mettre l'option component.requestFocus(); après la ligne setVisible(true); au bas de votre constructeur de cadre ou de panneau.

Cela a probablement quelque chose à voir avec le fait de demander le focus, après que tous les composants aient été créés, parce que créer un nouveau composant, après avoir demandé le focus, fera perdre le focus à votre composant, et fera que le focus ira à votre composant nouvellement créé. Du moins, c'est ce que je suppose.

1voto

wakjah Points 4129

Rien de ce qui précède n'a fonctionné pour moi, car ma fenêtre est une JPopupMenu .

Ce qui a marché, c'est ça :

addAncestorListener(new AncestorListener() {
    @Override
    public void ancestorAdded(AncestorEvent ae) {
        myEdit.requestFocus();
    }

    // ... other ancestor listener methods
}

1voto

Si vous créez votre GUI con Netbeans vous pouvez également insérer du code écrit par vous-même. Il suffit de sélectionner un élément (le bouton, le panneau ou la fenêtre) et d'utiliser l'onglet "Code" dans la boîte de dialogue "Propriétés".

Vous pouvez y insérer Pré- y Post- pour les différentes parties du processus de création.

Je pense que le champ "After-All-Set-Code" de la fenêtre est un bon endroit pour votre code, ou vous pourriez le lier à l'événement ("Properties"-dialog -> "Events") ". componentShown " du champ de texte / panneau.

-2voto

NavarreGuy Points 1

C'est facile :

textField.setFocus();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X