Listener adéquat pour un jtext field

supcomingenieur -  
arth Messages postés 10414 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je veux faire la chose suivante:

vérifier le contenue d'un jtext field lorsque je place mon curseur sur le jText password qui se trouve juste en dessus.

le problème est que ca ne marche ni avec un action listener, ni un key listener ni un focus listener.

ma question est donc comment détecter la présence de mon curseur dès que je le place dans un jtextpassword

merci bcp!

3 réponses

supcomingénieur Messages postés 87 Statut Membre 1
 
SVP c très urgent!!
personne pour m'aider?
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Pourtant le FocusListener peut faire ce que tu veux. Voici un exemple simple mais relativement complet de vérification login/mot de passe :

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.util.Map;
import java.util.TreeMap;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class Test
{
public static void main(String...args)
{
    final Map<String,String> authorized = new TreeMap<String,String>();
        authorized.put("Riri","123");
        authorized.put("Fifi","456");
        authorized.put("Loulou","789");
                
    final JTextField login = new JTextField();

    final JTextField control1 = new JTextField();
    control1.setEnabled(false);
    
    login.addFocusListener(new FocusListener()
    {
        @Override
        public void focusGained(FocusEvent e) 
        {
        }

        @Override
        public void focusLost(FocusEvent e)
        {            
            if (authorized.containsKey(login.getText()))
            {
                control1.setBackground(Color.GREEN);
                control1.setText("Autorisé");
            }
            else
            {
                control1.setBackground(Color.RED);
                control1.setText("Interdit");
            }
        }
    });
        
    final JPasswordField password = new JPasswordField();
    
    final JTextField control2 = new JTextField();
    control2.setEnabled(false);
    
    password.addFocusListener(new FocusListener()
    {
        @Override
        public void focusGained(FocusEvent e) 
        {
        }

        @Override
        public void focusLost(FocusEvent e)
        {
            if (authorized.containsKey(login.getText()))
            {
                if (authorized.get(login.getText()).equals(new String(password.getPassword())))
                {
                    control2.setBackground(Color.GREEN);
                    control2.setText("Correct");
                }
                else
                {
                    control2.setBackground(Color.RED);
                    control2.setText("Incorrect");                    
                }
            }
            else
            {
                control2.setBackground(Color.WHITE);
            }
        }
    });
        
    final JFrame frame = new JFrame();
    frame.setLayout(new GridLayout(2,3));
    frame.add(new JLabel("Login : "));
    frame.add(login);
    frame.add(control1);
    frame.add(new JLabel("Mot de passe : "));
    frame.add(password);
    frame.add(control2);
    frame.pack();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);    
}
}
0
supcomingenieur
 
merci pour ta reponse
j'ai deux autres questions qui me tracassent

1. je viens de finir une application java pour authentification forte : elle est composée de 2 interfaces graphiques qui communiquent avec une BD mysql. le programme fonctionne a merveille. mais je sais pas si c'est correcte. je veux dire y'a t-il pas un serveur d'authentification a inclure ? j'ai l'impression que mon application est banale

2. je veux greffer cette application sur un tel android. sauf que moi j'ai tout implémenté en java. si je veux la transformer est ce que je devrais tout reprendre ou bien il va s'agir de simples modifications (j'ai appri que android c'est du java)

merci bcp
0
arth Messages postés 10414 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Il y aura quand mêmes quelques modifs à effectuer pour traduire l'application pour mobile.

Si votre application est censée être développée pour être accessible depuis des terminaux mobiles, il est clairement inconcevable que chaque téléphone se connecte en direct sur votre BDD. A moins de développer un format web de l'application en question, ou bien encore de créer un serveur applicatif entre le téléphone et la BDD, sur lequel se connecterait l'application.
0
supcomingenieur
 
l'application est une sorte une fenetre d'authentification qui appelle un logiciel capable de générer un mot de passe a usage unique donc l'application devrait etre installé sur le tel en premier lieu.

pour ce qui est de la phase d'authetification je sais que normalement elle utilise un serveur je sais pas comment le ceer ni a quoi il servira exactement vu que mon projet compile deja bien
0
arth Messages postés 10414 Date d'inscription   Statut Contributeur Dernière intervention   1 293
 
Je comprends pas bien l'utilité de créer un mot de passe à usage unique si le logiciel contient déjà une fenêtre d'authentification. Autant ne pas mettre d'authentification si tout le monde peut se connecter.

Enfin après c'est peut être trop complexe pour mon piti cerveau :-D
0