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;
	}
 
}