Activer / desactiver JMenu

Signaler
Messages postés
7
Date d'inscription
samedi 16 mai 2009
Statut
Membre
Dernière intervention
17 août 2011
-
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
-
Bonsoir
en faite je developpe une application en java
au lancement de l'application tous les JMenu sont désactiver setEnabled(false)
je veux par la suite les activer apres m'avoir connecter à l'aide de setEnabled(true) mais ca marche pas
j'ai cette erreur
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at interfac.LoginForm.actionPerformed(LoginForm.java:122)
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$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$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)

11 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
Bonjour,

NullPointerException signigie que tu appelles une méthode sur un objet qui est à null. Je ne peux pas t'en dire plus, il faut que tu me montres le morceau de code qui lève l'exception pour que je puisse t'aider un peu plus.
Messages postés
7
Date d'inscription
samedi 16 mai 2009
Statut
Membre
Dernière intervention
17 août 2011

public void actionPerformed(ActionEvent ae)
{
String url= "jdbc:mysql://localhost/bdoo";
String login="root";
String password="";

java.sql.Connection cn=null;
java.sql.Statement st = null;

String value1=text1.getText();
String value2=text2.getText();

try {
Class.forName("com.mysql.jdbc.Driver");
cn=DriverManager.getConnection(url,login,password);
st=cn.createStatement();
java.sql.ResultSet result = st.executeQuery("SELECT * FROM connex where login='"+value1+"' and password='"+value2+"'");


String log="";
String pass="";

if(result.next())
{
log=result.getString(1);
pass=result.getString(2);

}
if(value1.equals("") && value2.equals("")) {
JOptionPane.showMessageDialog(null,"Enter login name or password","Error",JOptionPane.ERROR_MESSAGE);
}
else if (value1.equals(log) && value2.equals(pass))
{
JOptionPane.showMessageDialog(rootPane,"Login Successful!");
//next.m2.setEnabled(true);

this.setVisible(false);

}

m2 c'est un JMenu dans la classe NextPage qui est desactivé et je veux l'activer dans la portion du code if (Value1.equals(log)....
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
es tu sur que result, value1 et 2 ne sont jamais à null?? un peu bourrin comme code ;o) ...

GodConan ;o)
Messages postés
7
Date d'inscription
samedi 16 mai 2009
Statut
Membre
Dernière intervention
17 août 2011

value 1 et 2 c la recuperation de ce ke je saisie dans le JTextField
mais le probleme c dans la ligne next.m2.setEnabled(true);
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
ben vi ... tu n as pas mis les bon morceau de code.... on ne sait ni ce qu est next, n y ce que pourrait etre m2???!!! d ou l interret d utiliser des nom de variable PARLANT... ceci nullpointer c est qd meme l erreur la plus facil à trouver... tu pointes simplement sur une reference null ... si tu ne la trouve pas fait un sysout des references utilisé et tu la mettras en évidence ;o)

GodConan ;o)
Messages postés
7
Date d'inscription
samedi 16 mai 2009
Statut
Membre
Dernière intervention
17 août 2011

package interfac;


import javax.imageio.ImageIO;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;



public class NextPage extends JFrame implements ActionListener{
private Container c;
private JPanel imagePanel;
private String filePath;

Volet1 v1;
LoginForm v2;
JPanel panel;
JMenuBar mbar;

JMenu m1;
JMenu m2;
JMenu m3;
JMenu m4;
JMenu m5;
JMenu m6;

JMenu m62;

JMenuItem m11;
JMenuItem m12;
JMenuItem m13;
JMenuItem m31;
JMenuItem m51;
JMenuItem m52;
JMenuItem m53;
JMenuItem m61;
JMenuItem m621;
JMenuItem m622;
JMenuItem m623;

public NextPage()
{


setDefaultCloseOperation(javax.swing.
WindowConstants.DISPOSE_ON_CLOSE);
setTitle("PANEL DE MENAGES-ONDH ");
setSize(1280, 800);

// insertion d'objets graphiques sur la fenêtre
// à partir d'un panneau
panel = new JPanel();

Container contentPane = getContentPane();
//panel.setBackground(Color.GRAY);
contentPane.add(panel);
// Ajout d'une barre de menus à la fenêtre
mbar = new JMenuBar();

m1 = new JMenu("Fichier");

m13= new JMenuItem("authentifiez-vous");
m13.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{

v2 = new LoginForm();
v2.setVisible(true);

}
});
m1.add(m13);
m11 = new JMenuItem("Ouvrir");
m11.addActionListener(this); // installation d'un écouteur d'action
m1.add(m11); // ajout d'une option à un menu
m12 = new JMenuItem("Quitter");
m12.addActionListener(this);
m1.add(m12);

m2 = new JMenu("Localisation Géographique du ménage");

m2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{


}

});

m3= new JMenu("Identification des membres du ménage");

m31= new JMenuItem("Identification des membres du ménage");
m31.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{

v1 = new Volet1();
v1.setVisible(true);

}
});
m3.add(m31);

m4= new JMenu("Caractéristiques sociodémographiques des membres du ménage");


m5= new JMenu("Niveau d'éducation et alphabétisation");

m51= new JMenuItem("Niveau d'éducation:(Personnes âgées de 4 ans et plus)");
m51.addActionListener(this);//installation d'un écouteur d'action
m5.add(m51);
m52= new JMenuItem("Niveau d'éducation:(Personnes ayant suivi et arrêté ou n'ayant jamais suivi des études ");
m52.addActionListener(this);
m5.add(m52);
m53= new JMenuItem("Alphabétisation:(Personnes agées de 10 ans et plus)");
m53.addActionListener(this);
m5.add(m53);

m6= new JMenu("Autres");

m61= new JMenuItem("Formation Professionnelle:(Personnes agées de 10 et plus)");
m6.add(m61);
m62= new JMenu("Emploi");
m6.add(m62);
m621 = new JMenuItem("Emploi:(Personnes agées de 7ans et plus)");
m62.add(m621);
m622 = new JMenuItem("Emploi:(Pour les actifs occupés et les chômeurs ayant déjà travaillé)");
m62.add(m622);
m623= new JMenuItem("Emploi:(Pour les actifs occupés)");
m62.add(m623);

mbar.add(m1); // ajout de menus à la barre de menus
mbar.add(m2);
mbar.add(m3);
mbar.add(m4);
mbar.add(m5);
mbar.add(m6);

setJMenuBar(mbar);

}







// public void activerMenus()
//{
// m2.setEnabled(true);
// m3.setEnabled(true);
// m4.setEnabled(true);
// m5.setEnabled(true);
// m6.setEnabled(true);
//}




public void actionPerformed(ActionEvent evt)
{ if (evt.getSource()instanceof JMenuItem)
// gestion des événements liés aux menus
{ //String ChoixOption = evt.getActionCommand();
//if (ChoixOption.equals("Jaune"))panel.setBackground(Color.yellow);
//else if (ChoixOption.equals("Rouge"))panel.setBackground(Color.red);
//else if (ChoixOption.equals("Bleu"))
//{mbar.setBackground(Color.blue);
// m1.setBackground(Color.blue);
//m2.setBackground(Color.blue);
//}
//else if (ChoixOption.equals("Vert"))
//{mbar.setBackground(Color.green);
//m1.setBackground(Color.green);
//m2.setBackground(Color.green);
//};
//};

}
}
}
Voila je veux desactiver tous les JMenu m2,m3,m4,m5,m6
et je les activerais apres m'avoir connecter



package interfac;

/**
* Réalisé par:
* issam Benjami
* Meryem Talha
* Aloui Amal
* Meryem Mouhtadi
* Imane Zaimi
**/
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.DriverManager;

import javax.swing.*;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.Statement;


public class LoginForm extends JFrame implements ActionListener{
NextPage next;
JButton SUBMIT;
JPanel panel;
JLabel label1,label2;
final JTextField text1,text2;

public LoginForm()
{
setSize(300, 100);

label1 = new JLabel();
label1.setText("Username:");
text1 = new JTextField(15);

label2 = new JLabel();
label2.setText("Password:");
text2 = new JPasswordField(15);

SUBMIT=new JButton("SUBMIT");

panel=new JPanel(new GridLayout(3,1));
panel.add(label1);
panel.add(text1);
panel.add(label2);
panel.add(text2);
panel.add(SUBMIT);
add(panel,BorderLayout.CENTER);
SUBMIT.addActionListener(this);
setTitle("LOGIN FORM");
}

public static void sauverEnbase(String connex){
//Informations d'accès à la base de sonnées
String url= "jdbc:mysql://localhost/bdoo";
String login="root";
String password="";
java.sql.Connection cn=null;
java.sql.Statement st = null;

try{
Class.forName("com.mysql.jdbc.Driver");
cn=DriverManager.getConnection(url,login,password);
st=cn.createStatement();
String sql= "INSERT INTO `bdoo`.`connex` (`login`, `password`) VALUES ('siham', 'siham')";
st.executeUpdate(sql);

}catch(SQLException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();

}finally{
try{
cn.close();
st.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}

public void actionPerformed(ActionEvent ae)
{
String url= "jdbc:mysql://localhost/bdoo";
String login="root";
String password="";

java.sql.Connection cn=null;
java.sql.Statement st = null;

String value1=text1.getText();
String value2=text2.getText();

try {
Class.forName("com.mysql.jdbc.Driver");
cn=DriverManager.getConnection(url,login,password);
st=cn.createStatement();
java.sql.ResultSet result = st.executeQuery("SELECT * FROM connex where login='"+value1+"' and password='"+value2+"'");


String log="";
String pass="";

if(result.next())
{
log=result.getString(1);
pass=result.getString(2);

}
if(value1.equals("") && value2.equals("")) {
JOptionPane.showMessageDialog(null,"Enter login name or password","Error",JOptionPane.ERROR_MESSAGE);
}
else if (value1.equals(log) && value2.equals(pass))
{

JOptionPane.showMessageDialog(rootPane,"Login Successful!");
this.setVisible(false);

}
else if (!value1.equals(log) && !value2.equals(pass))
{
System.out.println("enter the valid username and password");
JOptionPane.showMessageDialog(this,"Incorrect login or password",
"Error",JOptionPane.ERROR_MESSAGE);
this.setVisible(true);
}

} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try{
cn.close();
st.close();
}catch(SQLException e){
e.printStackTrace();
}
}




}
}

voila le code des deux classes NextPage et LoginForm
Messages postés
7
Date d'inscription
samedi 16 mai 2009
Statut
Membre
Dernière intervention
17 août 2011

je veux les activer dans la partie du code
else if (value1.equals(log) && value2.equals(pass))
{

JOptionPane.showMessageDialog(rootPane,"Login Successful!");
this.setVisible(false);

}
Messages postés
7
Date d'inscription
samedi 16 mai 2009
Statut
Membre
Dernière intervention
17 août 2011

j'ai essayé avec sysout effectivement la valeur de next est null
que dois-je faire??
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
363
Sois avant d'appeler une méthode sur cette valeur, tu fais un test if(next!=null) soit tu t'arranges pour que cette valeur ne soit pas null.
Messages postés
7
Date d'inscription
samedi 16 mai 2009
Statut
Membre
Dernière intervention
17 août 2011

J'ai fais le test mais il entre pas du coup Les JMenu sont toujours désactiver!!
Messages postés
2113
Date d'inscription
samedi 8 novembre 2003
Statut
Contributeur
Dernière intervention
6 octobre 2012
11
Et diable!!!! fait un effort de nommage... c est illisible... et insoutennable ;o) .... de plus il est habituel de faire les instances des objets d'ihm à leur référencement... Cela évite souvent de mauvaise surprise et permet d organiser nettement mieux le code...

une petite balise '/Code' n aurait pas été supperflu ;o)


GodConan ;o)