IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

Problème d'ajout dans mon interface


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut Problème d'ajout dans mon interface
    Bonjour, dans mon travail de fin d'année je me retrouve coincé.
    Je vous expose le problème, et mettrai les sources après.

    J'ai pour faire simple une interface de login pour me connecter à une base de données Access au lancement de mon application, une fois le login effectué et vérifié, ma jolie interface devrait s'en aller pour laisser place à la fenêtre principale de mon application, fenêtre dans laquelle il y aura la barre de menu, et dans laquelle auront lieu les différentes opérations.

    Mon problème réside dans le fait que lorsque je fais appel à ma fenêtre d'application principale si j'ajoute la barre de menu dedans, j'ai une erreur à l'exécution.

    Je pense comprendre l'erreur, qui réside dans le fait, que comme ma page de login elle le container et qu'elle ne fait que recevoir une JPanel dedans, il faudrait que le barre de menu soit incorporée dans la classe de Login.

    Bon pas très clair mais difficile à expliquer, vous verrez peut être mieux avec les sources.

    D'avance merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    package tfe;
     
    import java.sql.*;
    import javax.swing.*;
     
    	public class Principal 
    	{
    		public static void main(String args[])
    		{	
    			new Logon();
    		}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    package tfe;
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.sql.*;
     
    public class Logon extends JFrame{
     
    	private Container contain;
    	private windowAppli fenetre;
    	private JPanel panHaut, panBas, panGauche, panDroit;
    	private ImageIcon logo = new ImageIcon("images\\logo.png");
    	private JButton butExit, butLogin;
    	private JLabel labBdd, labMdp, labLogo;
    	private JTextField nomBddField;
    	private JPasswordField passField;
    	private static Connection connect;
     
    	public Logon(){
    		contain = getContentPane();
    		this.setLayout(null);
    		setBounds(0,0,1280,800);
    		this.setResizable(false);
    		this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    		this.setTitle("<<< Application de maintenance informatique >>>");
     
    		panHaut = new JPanel();
    	    panBas = new JPanel();
    		panGauche = new JPanel();
    		panDroit = new JPanel();
     
    		panHaut.setBackground(Color.decode("#00309C"));
    		panBas.setBackground(Color.decode("#00309C"));
    		panGauche.setBackground(Color.decode("#5A7EDC"));
    		panDroit.setBackground(Color.decode("#5A7EDC"));
     
    		panHaut.setBounds(0,0,1280,100);
    		panBas.setBounds(0,670,1280,100);
    		panGauche.setBounds(0,100,640,570);
    		panDroit.setBounds(640,100,640,570);
     
    		contain.add(panHaut);
    		contain.add(panBas);
    		contain.add(panGauche);
    		contain.add(panDroit);
     
    		panDroit.setLayout(null);
    		panBas.setLayout(null);
     
    		labLogo = new JLabel(logo);
    		panGauche.add(labLogo);
     
    		labBdd = new JLabel("Base de données  ");
    		labBdd.setBounds(50,200,150,30);
    		panDroit.add(labBdd);
    		nomBddField = new JTextField("IntervMaint", 20);
    		nomBddField.setEditable(false);
    		nomBddField.setBounds(180,200,150,30);
    		panDroit.add (nomBddField);
     
    		labMdp = new JLabel("Mot de passe  ");
    		labMdp.setBounds(50,250,150,30);
    		panDroit.add(labMdp);
    		passField = new JPasswordField("test", 20);
    		passField.setBounds(180,250,150,30);
    		panDroit.add(passField);
     
    		butLogin = new JButton("Login");
    		butLogin.setBounds(340,250,150,30);
    		panDroit.add(butLogin);
     
    		butExit = new JButton("Exit");
    		butExit.setBounds(50,35,60,35);
    		panBas.add(butExit);
     
    		this.setVisible(true);
     
    		//Ajout d'un écouteur d'événement sur la fenêtre
    		//*************************************************************************
    		this.addWindowListener(new WindowAdapter(){
     
    			public void windowClosing(WindowEvent evt){
    				int choix = JOptionPane.showConfirmDialog(contain,"Voulez vous vraiment quitter l'application ?",
    						"Quitter l'application ?", JOptionPane.YES_NO_OPTION);
    				if (choix == JOptionPane.YES_OPTION) {
    					JOptionPane.showMessageDialog(null,"Merci d'avoir utilisé notre application, à bientôt !","Aurevoir !",	JOptionPane.INFORMATION_MESSAGE);
    					System.exit(0);} 
    				else {
    					JOptionPane.showMessageDialog(null,"Continuons à utiliser l'application dans ce cas","Utilisation de l'application",JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		});
     
    		//Ajout d'un écouteur d'événement sur le menu
    		//*************************************************************************
     
    		ButtonListener bL = new ButtonListener();
    		butExit.addActionListener(bL);
    		butLogin.addActionListener(bL);
    		nomBddField.addActionListener(bL);
    		passField. addActionListener(bL);
     
    	}
     
    	private class ButtonListener implements ActionListener{
    		public void actionPerformed (ActionEvent evt){
     
    			String nomBDD;
    			String pass;
     
    			if (evt.getSource()==nomBddField){// Permet de taper 'Enter' pour passer au champ suivant
    				passField.requestFocus();
    			}
     
    			if (evt.getSource() == butLogin || evt.getSource() == passField) {
    				nomBDD = nomBddField.getText();
    				pass = new String(passField.getPassword());
    				try {
    					connect = AccesGen.connecter(nomBDD, " ", pass);
    					JOptionPane.showMessageDialog(null,"Vous êtes bien connecté à la base de données "
    							+ nomBDD, "Connecté",JOptionPane.INFORMATION_MESSAGE);
    					contain.removeAll();
    					contain.setLayout(new BorderLayout());
    					fenetre = new windowAppli(Logon.this);
    					contain.add(fenetre, BorderLayout.CENTER);
    					contain.repaint();
    					Logon.this.setVisible(true);
    					} 
     
    				catch (SQLException e) {
    					JOptionPane.showMessageDialog(null, e,
    							"Erreur de connexion", JOptionPane.ERROR_MESSAGE);
    					}
    			}
     
    			if (evt.getSource() == butExit) {
    				int choix = JOptionPane.showConfirmDialog(contain,"Voulez vous vraiment quitter l'application ?",
    						"Quitter l'application ?", JOptionPane.YES_NO_OPTION);
    				if (choix == JOptionPane.YES_OPTION) {
    					JOptionPane.showMessageDialog(null,"Merci d'avoir utilisé notre application, à bientôt !","Aurevoir !",	JOptionPane.INFORMATION_MESSAGE);
    					System.exit(0);
    				} 
    				else{
    					JOptionPane.showMessageDialog(null,"Continuons à utiliser l'application dans ce cas","Utilisation de l'application",JOptionPane.INFORMATION_MESSAGE);
    				}
    			}
    		}
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    package tfe;
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
    import java.sql.*;
     
    public class windowAppli extends JPanel {
     
    	private Logon fenetre;
    	private JMenuBar menuBarre;
     
     
    	public windowAppli(Logon fenetre){
    		this.fenetre=fenetre;
    		fenetre.setTitle("test");
    		this.add(menuBarre);
    	}
     
    	public JMenuBar getMenuBarre() {
    		return menuBarre;
    	}
     
    }

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    On verrait surtout mieux si tu nous donnais l'erreur que tu obtiens à l'exécution

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Voilou l'erreur, en fait j'ai l'impression que l'erreur vient du fait que comme windowAppli extends JPanel, je ne peux pas ajouter la menuBarre dans cette fenêtre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at java.awt.Container.addImpl(Unknown Source)
    	at java.awt.Container.add(Unknown Source)
    	at tfe.windowAppli.<init>(windowAppli.java:18)
    	at tfe.Logon$ButtonListener.actionPerformed(Logon.java:125)
    	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.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)

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    C'est assez logique, tu ajoutes menuBarre dans windowAppli alors que tu n'as jamais initialisé menuBarre

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    LE boulet, j'avais pas fait de new JMenuBar

    Bon je test

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Bon je continue mes investigations, le passage s'effectue bien par contre, la barre de menu est assez bizarre comme vous pouvez le voir sur les deux images suivantes, la première représente la fenêtre de login, une fois loggué on doit avoir la seconde qui se charge dans la première. Cfr le code.

    Je suis pas certains que ma méthode de procéder soit correcte, si quelqu'un peut m'aider, je suis réellement perdu. D'avance merci.





  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Effectivement, ta manière de faire n'est pas la bonne.

    Il faut ajouter la barre de menu directement dans la JFrame avec la méthode setJMenuBar()

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Pourrais tu m'en dire un peu plus s'il te plaît,

    j'ai ajouté une méthode getters dans la classe mainWindow pour la menuBarre, et ajouté dans la classe Logon, la méthode setJMenuBar, mais je n'ai pas d'affichage, d'avance je te remercie.

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Il ne faut pas ajouter la méthode setJMenuBar, il faut l'appeler.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Logon(){
       JMenuBar bar = new JMenuBar();
     
       //Création des items
     
       setJMenuBar(bar);
    }

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Ok, mais donc si je te suis bien, la partie de la création du menu en l'occurance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private JMenuBar menuBarre;
    	private JMenu menuFichier, menuBDD, menuTraitement, menuListing, menuHelp;
    	private JMenuItem itemHome, itemExit, itemConnexion, itemDeconnexion, itemAjout, itemSuppression,
    	itemIntClotu, itemIntOpen, itemApropos;
    et tout le reste se fait directement dans la JFrame Logon ? et donc l'activation de la barre de menu se fait une fois que la connection a été vérifiée dans le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    try {
    					connect = AccesGen.connecter(nomBDD, " ", pass);
    					JOptionPane.showMessageDialog(null,"Vous êtes bien connecté à la base de données "
    							+ nomBDD, "Connecté",JOptionPane.INFORMATION_MESSAGE);
    					contain.removeAll();
    					contain.setLayout(new BorderLayout());
    					fenetre = new windowAppli(Logon.this);
    					contain.add(fenetre);
    					contain.repaint();
    					Logon.this.setVisible(true);
    					} 
     
    				catch (SQLException e) {
    					JOptionPane.showMessageDialog(null, e,
    							"Erreur de connexion", JOptionPane.ERROR_MESSAGE);
    					}
    			}
    de la classe Logon ?

    Est ce que je suis dans le bon. Encore merci de m'aider

  11. #11
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je pense que tu es dans le bon effectivement

    Soit tu l'ajoutes au début et du désactives chacun des items que tu réactives après le logon, soit tu l'ajoutes après avoir fait le logon.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Je teste ça, merci

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2008
    Messages : 19
    Par défaut
    Magnifique, je suis relancé dans l'avancement de mon programme. Je mets mon topic en résolu. Vivement le nouveau soucis, l'expérience des autres est tjrs très enrichissante.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'insertion d'images dans mon interface graphique
    Par nini_python dans le forum Tkinter
    Réponses: 8
    Dernier message: 03/08/2012, 19h59
  2. Problème Automate dans mon interface
    Par taitai83 dans le forum Général Java
    Réponses: 0
    Dernier message: 15/10/2009, 09h53
  3. problèmes dans mon interface + créer rectangle
    Par artragis dans le forum Débuter
    Réponses: 2
    Dernier message: 31/10/2008, 10h20
  4. [MySQL] problème dans mon interface admin
    Par ni.co dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/05/2008, 11h41
  5. Réponses: 2
    Dernier message: 02/06/2005, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo