Erreur dans ma JFrame première fenetre qui contient le main

Résolu/Fermé
gofagirl - Modifié par Whismeril le 26/04/2015 à 08:51
 gofagirl - 26 avril 2015 à 15:34
Bonjour,
J'ai une fenetre qui contient le main et qui est aussi la fenetre d'authentification qui permet à l'admin de se connecter.
J'ai l'erreur : The type FenPrincipal must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent)
Je ne comprends vraiment pas pourquoi, et j'ai essayé de corriger l'erreur de differente manière, quelque chose m'échappe, et je suis débutante, pouvez vous m'aider svp.
Voici mon code de FenPrincipal:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.*;
import javax.swing.text.View;

import com.mysql.jdbc.PreparedStatement;
import java.sql.*;
import java.awt.Component;
import java.awt.Color;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.awt.Font;


public class FenPrincipal extends JFrame implements ActionListener {
 private static final long serialVersionUID = 1L;
 public static String titreFenetre = "( o _ o )  --[ Administrateur ]--  [ x _ x ]"; // titre de la fenetre
 public static Dimension tailleFenetre = new Dimension(400, 280); // taille de la fenetre
 public JButton btn;
 public JButton btn1;
 public Connexion c = new Connexion();
 public Connection conn;
    public  PreparedStatement statement = null; 
    static JTextField textField_pseudo, textField_mdp ;
    public ResultSet  resultat=null;
    public static String query_admin; 
 public static String login_admin; //variable prenant en compte les donnees de la colonne login_admin dans la BDD
 public static String mdp_admin; //variable prenant en compte les donnees de la colonne mdp_admin dans la BDD
 public String motDePasse; //variable dans lesquelles sont placées les requetes
    public JPanel black;
 
  public static void main(String[] args) {
  //Création d'une nouvelle fenetre
  FenPrincipal fen = new FenPrincipal();      
 }
 /**


* Constructeur

*/
 public FenPrincipal() {
  setBackground(Color.DARK_GRAY);
  setTitle(titreFenetre);
  setSize(tailleFenetre);
  setResizable(false);
  setLocationRelativeTo(null); // la fenetre apparait au milieu de l'ecran
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  //Initialisation des JPanel
  JLabel lbl = new JLabel ();
  lbl.setText("Authentication de l'administrateur");
  JPanel haut = new JPanel();
  haut.setBackground(Color.WHITE);
  haut.add(lbl);
  getContentPane().add(BorderLayout.NORTH, haut);
  
  JPanel centre = new JPanel();
  centre.setBackground(Color.PINK);
  centre.setAlignmentX(Component.RIGHT_ALIGNMENT);
  centre.setAlignmentY(Component.BOTTOM_ALIGNMENT);
     centre.setLayout(null);
     JLabel login = new JLabel();
     login.setFont(new Font("Times New Roman", Font.PLAIN, 13));
     login.setBounds(10, 39, 100, 19);
     login.setText("LOGIN :");
     centre.add(login); 
     textField_pseudo.setBounds(127, 33, 200, 25);
     textField_pseudo.setPreferredSize(new Dimension(100, 20));
     centre.add(textField_pseudo); 
  
  
     JLabel mdp = new JLabel();
     mdp.setFont(new Font("Times New Roman", Font.PLAIN, 13));
     mdp.setBounds(10, 80, 107, 19);
     mdp.setText("MOT de PASSE :");
     centre.add(mdp); 
     textField_mdp.setBounds(127, 74, 200, 25);
     centre.add(textField_mdp);
     btn1 = new JButton("Quitter");
     btn1.setBounds(236, 110, 91, 30);
     centre.add(btn1);
     btn1.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    System.exit(0);
   }
  });
     getContentPane().add(BorderLayout.CENTER, centre);
  
     
     btn = new JButton("Connecter");
     btn.setBounds(127, 110, 91, 30);
     btn.setPreferredSize(new Dimension(150, 30));
     centre.add(btn);
     btn.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) 
   {  
         c.ConnexionBD();
         conn = c.getConnect();
    try {
         //Traitement
     Statement stmt_admin = (Statement) conn.createStatement(); 
     query_admin = ("SELECT login_admin, mdp_admin FROM admin");
         stmt_admin.executeQuery (query_admin);
         ResultSet rs_admin = stmt_admin.getResultSet();
  
            while (rs_admin.next())
            { 
             Connexion.dbUsername_admin = rs_admin.getString("login_admin");
                Connexion.dbPassword_admin = rs_admin.getString("mdp_admin");
         
            if (Connexion.dbUsername_admin.equals(Connexion.textField_pseudo.getText()) && Connexion.dbPassword_admin.equals(Connexion.textField_mdp.getText()))
           {
             Admin admin = new Admin();
             admin.setVisible(true);
           }
                  else{
                   Connexion.erreur_log = true;
                  }
                  Connexion.recherche_bdd = true;
               Connexion.erreur_log = false;
              }  } }}); 
 }
}



Et voici mon code de Connexion:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.swing.JPasswordField;
import javax.swing.JTextField;


public class Connexion {
 public Connection conn; 
  public static boolean erreur_bdd = false;
  public static boolean recherche_bdd = false;
  public static String dbUsername_admin, dbPassword_admin;
  public static JTextField textField_pseudo; // création du champ pseudo
  public static JPasswordField textField_mdp; // création du cham mdp cypté
  public static boolean erreur_log = false;

    public void ConnexionBD(){
    //Chargement de la base de donnée
 try {
     
   Class.forName("com.mysql.jdbc.Driver");
   //Connection établi entre l'application et la base de donnée gestion_stock
      conn = DriverManager.getConnection("jdbc:mysql://localhost/gestion_stock","root","");
                System.out.println("Connexion à la base de données réussie"); 
          }
         catch(ClassNotFoundException err) {
                    System.out.println("\n Pilote non trouvé..");
                }
   catch(SQLException err) {
                    System.out.println("\n Connexion impossible");
                }
          }
    
    public Connection getConnect(){
        
        return conn;
    }
}



EDIT: Ajout de la coloration syntaxique.
A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
26 avril 2015 à 12:13
Bonjour,

Tu marques :

public class FenPrincipal
       extends JFrame
       implements ActionListener

Or si tu implémentes ActionListener, tu dois définir
void actionPerformed(ActionEvent e)
dans la liste de tes méthodes.

Dans ton cas, vu que tu gères déjà des actionPerformed dans des classes anonymes pour chaque bouton, tu peux carrément supprimer
implements ActionListener
puisque non utilisé par la suite.
1
Merci beaucoup, je n'ai plus l'erreur, mais lorsque je lance le programme j'ai :
Exception in thread "main" java.lang.NullPointerException
at gestion_stock.FenPrincipal.<init>(FenPrincipal.java:75)
at gestion_stock.FenPrincipal.main(FenPrincipal.java:44)

Et j'ai à la ligne 44: FenPrincipal fen = new FenPrincipal();
Et j'ai à la ligne 75: textField_pseudo.setBounds(127, 33, 200, 25);

Je ne vois pas d'ou vient le problème.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
26 avril 2015 à 13:09
textField_pseudo n'est pas initialisé (il vaut null), tu ne fais jamais de textField_pseudo = new JTextField();

Remarque : je ne vois pas de raison pour que textField_pseudo soit static.
0
gofagirl > KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024
26 avril 2015 à 13:20
oui c'est vrai! Merci pour la remarque. Je n'ai plus d'erreur dans mon code mais le programme ne se lance pas et il n'affiche rien dans la console.
Voici mon nouveau code:

public class FenPrincipal extends JFrame {
private static final long serialVersionUID = 1L;
public static String titreFenetre = "( o _ o ) --[ Administrateur ]-- [ x _ x ]"; // titre de la fenetre
public static Dimension tailleFenetre = new Dimension(400, 280); // taille de la fenetre
public JButton btn;
public JButton btn1;
public Connexion c = new Connexion();
public Connection conn;
public PreparedStatement statement = null;
public JTextField textField_pseudo, textField_mdp ;
public ResultSet resultat=null;
public static String query_admin;
public static String login_admin; //variable prenant en compte les donnees de la colonne login_admin dans la BDD
public static String mdp_admin; //variable prenant en compte les donnees de la colonne mdp_admin dans la BDD
public JPanel black;

public static void main(String[] args) {
//Création d'une nouvelle fenetre
FenPrincipal fen = new FenPrincipal();
}
/**
  • Constructeur
  • /

public FenPrincipal() {
setBackground(Color.DARK_GRAY);
setTitle(titreFenetre);
setSize(tailleFenetre);
setResizable(false);
setLocationRelativeTo(null); // la fenetre apparait au milieu de l'ecran
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Initialisation des JPanel
JLabel lbl = new JLabel ();
lbl.setText("Authentication de l'administrateur");
JPanel haut = new JPanel();
haut.setBackground(Color.WHITE);
haut.add(lbl);
getContentPane().add(BorderLayout.NORTH, haut);

JPanel centre = new JPanel();
centre.setBackground(Color.PINK);
centre.setAlignmentX(Component.RIGHT_ALIGNMENT);
centre.setAlignmentY(Component.BOTTOM_ALIGNMENT);
centre.setLayout(null);
JLabel login = new JLabel();
login.setFont(new Font("Times New Roman", Font.PLAIN, 13));
login.setBounds(10, 39, 100, 19);
login.setText("LOGIN :");
centre.add(login);
textField_pseudo = new JTextField();
textField_pseudo.setBounds(127, 33, 200, 25);
textField_pseudo.setPreferredSize(new Dimension(100, 20));
centre.add(textField_pseudo);


JLabel mdp = new JLabel();
mdp.setFont(new Font("Times New Roman", Font.PLAIN, 13));
mdp.setBounds(10, 80, 107, 19);
mdp.setText("MOT de PASSE :");
centre.add(mdp);
textField_mdp = new JPasswordField();
textField_mdp.setBounds(127, 74, 200, 25);
centre.add(textField_mdp);
btn1 = new JButton("Quitter");
btn1.setBounds(236, 110, 91, 30);
centre.add(btn1);
btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
getContentPane().add(BorderLayout.CENTER, centre);


btn = new JButton("Connecter");
btn.setBounds(127, 110, 91, 30);
btn.setPreferredSize(new Dimension(150, 30));
centre.add(btn);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
c.ConnexionBD();
conn = c.getConnect();
try {
//Traitement
Statement stmt_admin = (Statement) conn.createStatement();
query_admin = ("SELECT login_admin, mdp_admin FROM admin");
stmt_admin.executeQuery (query_admin);
ResultSet rs_admin = stmt_admin.getResultSet();

while (rs_admin.next())
{
Connexion.dbUsername_admin = rs_admin.getString("login_admin");
Connexion.dbPassword_admin = rs_admin.getString("mdp_admin");

if (Connexion.dbUsername_admin.equals(Connexion.textField_pseudo.getText()) && Connexion.dbPassword_admin.equals(Connexion.textField_mdp.getText()))
{
Admin admin = new Admin();
admin.setVisible(true);
}
else {
Connexion.erreur_log = true;
}
Connexion.recherche_bdd = true;
Connexion.erreur_log = false;
}

Connexion.recherche_bdd=false;
} catch (SQLException eeee) {
eeee.printStackTrace();
Connexion.erreur_bdd = true;
Connexion.recherche_bdd=false;
}
} });
}
}
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
26 avril 2015 à 13:30
Tout simplement parce que tu n'affiches pas la fenêtre...

public static void main(String[] args) {
    //Création d'une nouvelle fenetre
    FenPrincipal fen = new FenPrincipal();
    fen.setVisible(true); // tu as oublié
 }

Remarque : pour copier-coller du code sur le forum utilises les balises faites pour ça (c'est le 4è bouton à côté de gras, italique et souligné) :

<code java>...</code>

Voir aussi le lien de Whismeril qu'il a rajouté en éditant ton message ce matin.
0
Merci, merci j'avais supprimé l'affichage de la fenetre sans faire exprès,
maintenant ca se lance et la connexion à la base de donnée est réussie mais j'ai l'erreur :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at gestion_stock.FenPrincipal$2.actionPerformed(FenPrincipal.java:119)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

A la ligne 119 j'ai :
			        	if (Connexion.dbUsername_admin.equals(Connexion.textField_pseudo.getText()) && Connexion.dbPassword_admin.equals(Connexion.textField_mdp.getText()))
0