Erreur dans ma JFrame première fenetre qui contient le main
Résolu
gofagirl
-
gofagirl -
gofagirl -
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:
Et voici mon code de Connexion:
EDIT: Ajout de la coloration syntaxique.
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:
- Erreur dans ma JFrame première fenetre qui contient le main
- Fenetre windows - Guide
- Fenêtre hors écran windows 11 - Guide
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Téléchargez cette archive (dossier compressé). en extraire tous les fichiers dans un dossier local. quel fichier contient l’expression trouverpix ? ✓ - Forum Windows
- Delai paiement le bon coin remise en main propre - Forum Vos droits sur internet
1 réponse
Bonjour,
Tu marques :
Or si tu implémentes ActionListener, tu dois définir
Dans ton cas, vu que tu gères déjà des actionPerformed dans des classes anonymes pour chaque bouton, tu peux carrément supprimer
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 ActionListenerpuisque non utilisé par la suite.
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.
Remarque : je ne vois pas de raison pour que textField_pseudo soit static.
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;
}
} });
}
}
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.
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 :