Partage
  • Partager sur Facebook
  • Partager sur Twitter

{java}mot de passe

mot de passe pour acceder a une interface

Sujet résolu
24 mars 2007 à 21:48:46

Bonjour mes amis
je voudrais réaliser une petite application qui permet à un utilisateur de s'identifier avec son login et son mot de passe.
Je voulais savoir quelle méthode me conseillez vous ?
Merci
  • Partager sur Facebook
  • Partager sur Twitter
24 mars 2007 à 22:45:52

- Un JTextField pour le login;

- Un JPasswordField pour le mot de passe;

- Et un JButton, nommé "Ok" (ou n'importe quoi) pour pouvoir gérer les informations tenues dans les deux précédents composants.

Tu les trouvera dans javax.swing ^^

Je les utilise dans mon programme juste ici : F.A.N.

Libre à toi de jeter un coup d'oeil sur le code source ^^
  • Partager sur Facebook
  • Partager sur Twitter
Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
25 mars 2007 à 13:06:10

merci j'ai créé une interface avec mot de passe mais je n'ai aucune idée comment gérer les informations tenues dans les deux composants dans Un JTextField et Un JPasswordField
  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2007 à 13:18:59

fonction getText() dans les deux cas
cf javadoc pour plus de détails !
ameliep
  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2007 à 20:49:00

merci encore je m'avance j'ai utilisé getText() pour tester la valeur en entrée puisque la valeur est juste si je tape sur entré j'irais sur une autre fenetre (JFrame) ?
comment déplacer a nouvelle fenetre si je tape sur le bouton JButton ("entré") ?
  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2007 à 21:10:35

Ton application se presente sous quelle forme ? Si c'est une demande de login+pass au demarage alors je te conseillerai de demander les informations dans une JDialog. Si les informations sont bonnes . Apres l'appuie sur Entree (utilisation d'un KeyListener) ta frame principale sera rendue visible (setVisible(true) alors que la demande de login sera fermée : dispose() )

Pour ma part je manque d'informations sur ce que tu veux faire exactement :/

EDIT : jour de bonté ...


import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class DiagLogin extends JFrame implements ActionListener{

        // On retrouve ici beaucoup de variables qui auraient pue se trouver uniquement dans le constructeur ..
        private static final long serialVersionUID = 1l;
        private JTextField tfLogin = new JTextField();
        private JPasswordField pfPassWord = new JPasswordField();
        private JButton bOk = new JButton("login");
        private GridBagLayout gbl = new GridBagLayout();
        private JLabel lbLogin = new JLabel("Login : ");
        private JLabel lbPassWord = new JLabel("Password : ");
       
        public DiagLogin(){
                super("Login");
                this.setLayout(gbl);
                GridBagConstraints gbc = new GridBagConstraints();
                gbc.fill = GridBagConstraints.BOTH;
                gbc.gridx = 0;
                gbc.gridy = 0;
                gbc.weightx = 1;
                gbc.weighty = 1;
                gbc.gridwidth = 1;
                gbc.gridheight = 1;
                gbc.insets = new Insets(5,10,2,0);
               
                gbl.setConstraints(this.lbLogin, gbc);
                this.add(this.lbLogin);

                gbc.insets = new Insets(5,0,2,10);
                gbc.gridx = 1;
                gbc.weightx = 5;
                gbl.setConstraints(this.tfLogin, gbc);
                this.add(this.tfLogin);

                gbc.insets = new Insets(0,10,2,0);
                gbc.gridx =0;
                gbc.gridy = 1;
                gbc.weightx = 1;
                gbl.setConstraints(this.lbPassWord, gbc);
                this.add(this.lbPassWord);

                gbc.insets = new Insets(0,0,2,10);
                gbc.gridx =1;
                gbc.weightx = 5;
                gbl.setConstraints(this.pfPassWord, gbc);
                this.add(this.pfPassWord);
               
                gbc.gridx =0;
                gbc.gridy = 2;
                gbc.gridwidth =2;
                gbc.weightx = 1;
                gbc.insets = new Insets(10,50,5,50);
                this.bOk.addActionListener(this);
                gbl.setConstraints(this.bOk, gbc);
                this.add(this.bOk);
               
                this.setResizable(false);
                this.setSize(200, 110);
                this.setVisible(true);
        }
       
        public void actionPerformed(ActionEvent e){
                HashMap<String,String> hmLoginPass = new HashMap<String,String>();
                hmLoginPass.put("Sateth", "pass");
                String pass = new String(this.pfPassWord.getPassword());
                String login = this.tfLogin.getText().trim();
                if(!hmLoginPass.containsKey(login))
                        return;
                if(hmLoginPass.get(login).equals(pass)){
                        this.dispose();
                        new Prog().setVisible(true); // On admet que Prog est la classe creant notre Interface :)
                }
               
        }

}
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2007 à 15:36:18

merci pour cette information je n'ai pas encore analyser car j'ai débuté avec ma méthode qui teste si le mot de passe en entré est valide ou pas mais le problème que la boite de dialogue n'affiche pas
voila le code


package aa;
import java.text.*;
import java.util.Date;
import java.text.DateFormat;
import java.sql.*;
import java.util.*;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.lang.*;
 
public class SimpleFenetre extends JFrame implements ActionListener {
 
  private JPanel container = null; //Déclaration de l’objet JPanel
  private FlowLayout layout = null; //Déclaration de notre layout
  private JLabel labelResultat = null; //Déclaration de l'objet JLabel
  private JLabel labelResultat2 = null;
 JPasswordField txt =null;
  private JButton bouton = null;
 
  public SimpleFenetre() {
    super();
 
    build(); //On initialise notre fenêtre
  }
 
  private void build() {
    this.setContentPane(getContainer());
    this.setTitle("Ma première application"); //On donne un titre à l’application
    this.setSize(820, 640); //On donne une taille à notre fenêtre
    this.setLocationRelativeTo(null); //On centre la fenêtre sur l’écran
    this.setResizable(false); //On interdit la redimensionnement de la fenêtre
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l’application de se fermer lors du clic sur la croix
 
  }
 
  private JPanel getContainer() {
    layout = new FlowLayout(); //Instanciation du layout
    layout.setAlignment(FlowLayout.CENTER); //On centre les composants
 
    container = new JPanel(); //On crée notre objet
    container.setLayout(layout); //On applique le layout
 
    labelResultat2 = new JLabel("inserer votre mot de passe");
    labelResultat2.setPreferredSize(new Dimension(100, 25));
    Color couleur = Color.red;
    labelResultat2.setForeground(couleur);
    container.add(labelResultat2);
 
    JPasswordField txt = new JPasswordField(5);
    txt.setEchoChar('*');
    txt.setPreferredSize(new Dimension(100, 25));
    container.add(txt);
 
 
 
    bouton = new JButton("entrer ");
    bouton.setPreferredSize(new Dimension(125, 25));
    bouton.addActionListener(this);
    container.add(bouton);
 
    return container;
  }
 
  public static void main(String[] args) {
 
    SimpleFenetre gui = new SimpleFenetre(); //On crée une nouvelle instance de notre fenêtre
    gui.setVisible(true);
  }
 
  public void actionPerformed(ActionEvent e) {
 
    if (e.getActionCommand().equals(bouton) ) {
 
      char[] input =txt.getPassword();
         if (isPasswordCorrect(input)){
 
          JOptionPane.showMessageDialog(this,
              "success");
      }else{
        JOptionPane.showMessageDialog(this,
              "Invalid password. Try again.",
              "Error Message",
              JOptionPane.ERROR_MESSAGE);
 
      }
 
       }
 
 
 
  }
 
 
private static boolean isPasswordCorrect(char[] input) {
    boolean isCorrect = true;
    char[] correctPassword = { 'a', 'l', 'l', 'o'};
 
    if (input.length != correctPassword.length) {
        isCorrect = false;
    } else {
        for (int i = 0; i < input.length; i++) {
            if (input[i] != correctPassword[i]) {
                isCorrect = false;
            }
        }
    }
 
    //Zero out the password.
    for (int i = 0; i < correctPassword.length; i++) {
        correctPassword[i] = 0;
    }
 
    return isCorrect;
}
 
 
}



la boite de dialogue n'affiche pas
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2007 à 18:13:06

Alors :

1) ton super() est inutile il est fait par defaut
2) Ton JPassWordField est ... toujours null vu que le JPassWord crée visuellement n'est pas le meme (tu le recreer dans le constructeur)
3) Pour recuperer l'element on ne fais pas :

e.getActionCommand().equals(bouton)

mais

e.getSource()==bouton

4) le code est assez sale quand même ^^, enfin ca passe :p ta verification du pass pourrait etre plus rapide (voir mon code dans actionperformed)
  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2007 à 1:21:51

merci encore je voulais bien utiliser ton code alors j'ai essayé mais j'ai un message d'erreur


package aa;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class SimpleFenetre extends JFrame {

        // On retrouve ici beaucoup de variables qui auraient pue se trouver uniquement dans le constructeur ..
        private static final long serialVersionUID = 1l;
        private JTextField tfLogin = new JTextField();
        private JPasswordField pfPassWord = new JPasswordField();
        private JButton bOk = new JButton("login");
        private GridBagLayout gbl = new GridBagLayout();
        private JLabel lbLogin = new JLabel("Login : ");
        private JLabel lbPassWord = new JLabel("Password : ");

        public SimpleFenetre(){
                super("Login");
                this.setLayout(gbl);
                GridBagConstraints gbc = new GridBagConstraints();
                gbc.fill = GridBagConstraints.BOTH;
                gbc.gridx = 0;
                gbc.gridy = 0;
                gbc.weightx = 1;
                gbc.weighty = 1;
                gbc.gridwidth = 1;
                gbc.gridheight = 1;
                gbc.insets = new Insets(5,10,2,0);

                gbl.setConstraints(this.lbLogin, gbc);
                this.add(this.lbLogin);

                gbc.insets = new Insets(5,0,2,10);
                gbc.gridx = 1;
                gbc.weightx = 5;
                gbl.setConstraints(this.tfLogin, gbc);
                this.add(this.tfLogin);

                gbc.insets = new Insets(0,10,2,0);
                gbc.gridx =0;
                gbc.gridy = 1;
                gbc.weightx = 1;
                gbl.setConstraints(this.lbPassWord, gbc);
                this.add(this.lbPassWord);

                gbc.insets = new Insets(0,0,2,10);
                gbc.gridx =1;
                gbc.weightx = 5;
                gbl.setConstraints(this.pfPassWord, gbc);
                this.add(this.pfPassWord);

                gbc.gridx =0;
                gbc.gridy = 2;
                gbc.gridwidth =2;
                gbc.weightx = 1;
                gbc.insets = new Insets(10,50,5,50);
               
                gbl.setConstraints(this.bOk, gbc);
                this.add(this.bOk);

                this.setResizable(false);
                this.setSize(200, 110);
                this.setVisible(true);
        }

     
}




j'ai besoin de ta méthode pour créer des interface
le message d'erreur

java.lang.NoSuchMethodError: main
Exception in thread "main"
  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2007 à 13:35:21

<EDIT : j'ai parlé trop vite :-° >
  • Partager sur Facebook
  • Partager sur Twitter
Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
29 mars 2007 à 15:21:12

volia j'ai oublié d'ajouté main je l'ai ajouté


package aa;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class SimpleFenetre extends JFrame {

        // On retrouve ici beaucoup de variables qui auraient pue se trouver uniquement dans le constructeur ..
        private static final long serialVersionUID = 1l;
        private JTextField tfLogin = new JTextField();
        private JPasswordField pfPassWord = new JPasswordField();
        private JButton bOk = new JButton("login");
        private GridBagLayout gbl = new GridBagLayout();
        private JLabel lbLogin = new JLabel("Login : ");
        private JLabel lbPassWord = new JLabel("Password : ");

        public SimpleFenetre(){
                super("Login");
                this.setLayout(gbl);
                GridBagConstraints gbc = new GridBagConstraints();
                gbc.fill = GridBagConstraints.BOTH;
                gbc.gridx = 0;
                gbc.gridy = 0;
                gbc.weightx = 1;
                gbc.weighty = 1;
                gbc.gridwidth = 1;
                gbc.gridheight = 1;
                gbc.insets = new Insets(5,10,2,0);

                gbl.setConstraints(this.lbLogin, gbc);
                this.add(this.lbLogin);

                gbc.insets = new Insets(5,0,2,10);
                gbc.gridx = 1;
                gbc.weightx = 5;
                gbl.setConstraints(this.tfLogin, gbc);
                this.add(this.tfLogin);

                gbc.insets = new Insets(0,10,2,0);
                gbc.gridx =0;
                gbc.gridy = 1;
                gbc.weightx = 1;
                gbl.setConstraints(this.lbPassWord, gbc);
                this.add(this.lbPassWord);

                gbc.insets = new Insets(0,0,2,10);
                gbc.gridx =1;
                gbc.weightx = 5;
                gbl.setConstraints(this.pfPassWord, gbc);
                this.add(this.pfPassWord);

                gbc.gridx =0;
                gbc.gridy = 2;
                gbc.gridwidth =2;
                gbc.weightx = 1;
                gbc.insets = new Insets(10,50,5,50);
               
                gbl.setConstraints(this.bOk, gbc);
                this.add(this.bOk);

                this.setResizable(false);
                this.setSize(200, 110);
                this.setVisible(true);
        }

public static void main(String[] args) {

   SimpleFenetre gui = new SimpleFenetre(); //On crée une nouvelle instance de notre fenêtre

 }


     
}




mais encore un message d'erreur

java.lang.Error: Do not use aa.SimpleFenetre.setLayout() use aa.SimpleFenetre.getContentPane().setLayout() instead
at javax.swing.JFrame.createRootPaneException(JFrame.java:465)
at javax.swing.JFrame.setLayout(JFrame.java:531)
at aa.SimpleFenetre.<init>(SimpleFenetre.java:28)
at aa.SimpleFenetre.main(SimpleFenetre.java:76)
Exception in thread "main"

  • Partager sur Facebook
  • Partager sur Twitter
29 mars 2007 à 21:01:14

tu utilises quelle version de JDK ?

je suis en 1.5.0_08.

Enfin ton message d'erreur me semble tout de même assez clair ^^.

Au lieu d'utiliser la methode setLayout sur la JFrame tu dois lutiliser sur le ContentPane de cette JFrame

A mon avis tu auras l'erreur pour les autres methodes appellés sur la JFrame directement :p donc a toi de le corriger.

au lieu de this.X() utilise this.getContentPane().X()
  • Partager sur Facebook
  • Partager sur Twitter
30 mars 2007 à 13:14:43

merci ami j'ai modifié l'erreur et j'ai utilisé gbc.fill = GridBagConstraints.NONE pour ne redimensionne pas le composant
mais j'ai malheureusement un pb j'ai remarqué que entre la ligne 1 qui contient JLabel(("Login : ")et JTextField(); et la ligne 2 qui contient JLabel("Password : ")etJPasswordField();un grand espace libre ,comment diminuer l'espace ,je cherche à faire approcher les deux lignes

merci encore de bien vouloir m'aider
  • Partager sur Facebook
  • Partager sur Twitter
31 mars 2007 à 18:22:23

fais varier les gbc.insets, ce sont les bordures (espaces blancs)

ainsi le premier entier corespond a lespace en pixel au nord du composant, le second a l'ouest, l'autre au sud et enfin le dernier a l'est.
  • Partager sur Facebook
  • Partager sur Twitter
1 avril 2007 à 18:54:49

merci ami encore je vouais just comprendre que ça veut dire
gbc.weightx = 1;
gbc.weighty = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
c.ipady = 40;
gbc.fill = GridBagConstraints.HORIZONTAL;
car je n'ai pas bien compris d'apres la doc le role de chaque composant
  • Partager sur Facebook
  • Partager sur Twitter
1 avril 2007 à 21:04:08

En fait le GridBagConstraints sert a parametrer le GridBagLayout qui est le gestionnaire de placement. On affecte ses contraintes a chaque composant separement. Il faut voir le GridBagLayout comme un tableau que tu modeles comme tu veux :).

weightx et weighty servent a definir les poids des objets les uns par raport aux autres.

par exemple si un objet a weightx=1 et qu'un autre a weightx=50, alors cet objet (celui avec 50) sera jusqua 50 fois plus large (car le x a la fin signifie l'abscisse). De même pour les weighty mais ici cela jouera sur la hauteur des elements :). C'est utile pour avoir une zone de texte plus grande que les autres composants par exemple.

gridwidth et gridheight gere quand a eux la largeur et la hauteur du composant. (le nombre de colones et de lignes qu'il va prendre)

par exemple un objet avec un gridwidth a 3 prendra 3 colonnes (il equivaudra a 3 composants en gridwidth=1 par exemple). Attention, un weightx et un gridwidth sont different, le weight ne va pas faire prendre plusieurs colonnes a ton composant, ce dernier va juste etre plus gros que les autres :).

Je n'ai jamais eu a utiliser le ipad et le fill sert a definir le placement de ton composant, au centre, ...

  • Partager sur Facebook
  • Partager sur Twitter