Activer / desactiver JMenu

miloulou20 Messages postés 7 Date d'inscription samedi 16 mai 2009 Statut Membre Dernière intervention 17 août 2011 - 16 août 2011 à 20:11
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 - 18 août 2011 à 06:48
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

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
16 août 2011 à 21:37
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.
0
miloulou20 Messages postés 7 Date d'inscription samedi 16 mai 2009 Statut Membre Dernière intervention 17 août 2011
17 août 2011 à 03:58
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)....
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
17 août 2011 à 06:30
es tu sur que result, value1 et 2 ne sont jamais à null?? un peu bourrin comme code ;o) ...

GodConan ;o)
0
miloulou20 Messages postés 7 Date d'inscription samedi 16 mai 2009 Statut Membre Dernière intervention 17 août 2011
17 août 2011 à 15:56
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);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
17 août 2011 à 17:59
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)
0
miloulou20 Messages postés 7 Date d'inscription samedi 16 mai 2009 Statut Membre Dernière intervention 17 août 2011
17 août 2011 à 19:44
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
0
miloulou20 Messages postés 7 Date d'inscription samedi 16 mai 2009 Statut Membre Dernière intervention 17 août 2011
17 août 2011 à 19:46
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);

}
0
miloulou20 Messages postés 7 Date d'inscription samedi 16 mai 2009 Statut Membre Dernière intervention 17 août 2011
17 août 2011 à 19:58
j'ai essayé avec sysout effectivement la valeur de next est null
que dois-je faire??
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
17 août 2011 à 21:19
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.
0
miloulou20 Messages postés 7 Date d'inscription samedi 16 mai 2009 Statut Membre Dernière intervention 17 août 2011
17 août 2011 à 23:04
J'ai fais le test mais il entre pas du coup Les JMenu sont toujours désactiver!!
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
18 août 2011 à 06:48
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)
0
Rejoignez-nous