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;
}
}
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.
KX
Messages postés16752Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 août 20243 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.
gofagirl
>
KX
Messages postés16752Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 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);
KX
Messages postés16752Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention31 août 20243 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.
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()))
26 avril 2015 à 13:06
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.
26 avril 2015 à 13:09
Remarque : je ne vois pas de raison pour que textField_pseudo soit static.
26 avril 2015 à 13:20
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();
}
/**
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;
}
} });
}
}
26 avril 2015 à 13:30
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.
26 avril 2015 à 13:54
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 :