Ca marche toujours pas... J'essaye de mettre une fonction dans chacune de mes classes "President", "Tresorier", etc. des méthodes get et set, je pourrais les utiliser depuis une autre classe?
Ca marche toujours pas... J'essaye de mettre une fonction dans chacune de mes classes "President", "Tresorier", etc. des méthodes get et set, je pourrais les utiliser depuis une autre classe?
GRULF
Tu pourra y accéder depuis l'instance de ton objet. A partir du moment où tu dispose d'une référence de cette instance, tu y accède quand tu veux.
Au besoin repost ton code.
J'ai réduit au maximum mes classes pour tester sur seulement 2 JPanels "President" et "Tresorier", que j'ai modifiés...
Maintenant, DossierUnique construit le conteneur JPanel et appelle President et Tresorier en leur donnant le num_asso. Ainsi, President et Tresorier construisent les JTextField et les initialisent eux-mêmes...
Maintenant je peux afficher les 2 JPanels President et Tresorier (presque) correctement, mais il y encore 1 petit problème:
Lorsque je lance DossierUnique une 1ère fois, ça va, mais la 2ème fois, le JPanel (president ou tresorier) affiché est celui qui était ouvert à la fermeture précédente (alors que la liste déroulante s'est remise sur le 1er item)
DossierUnique:President:
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 package vue; import java.awt.*; import java.sql.*; import controleur.*; import javax.swing.*; import com.sun.java.swing.plaf.motif.MotifBorders.BevelBorder; import net.miginfocom.swing.MigLayout; public class DossierUnique extends JPanel { // Panels public JPanel panel_gauche = new JPanel(); /*public JPanel panel_droit = new JPanel(); public JPanel association = new JPanel();*/ public JPanel contact = new JPanel(); public static JPanel panel_dynamique = new JPanel(); // Liste déroulante public JComboBox liste_contacts = new JComboBox(new String[] {"president", "tresorier"}); // Variables public static String num_asso; private final long serialVersionUID = 1L; public DossierUnique(String num){ num_asso=num; // MISE EN PAGE setLayout(new MigLayout("","left","top")); ///////////////// //PANEL GAUCHE // ///////////////// panel_gauche.setLayout(new MigLayout()); // PANEL CONTACT (BAS GAUCHE) contact.setBorder(BorderFactory.createLineBorder(Color.black)); contact.setLayout(new MigLayout()); // Liste déroulante liste_contacts.addActionListener(new but_dossier_unique_liste_contacts()); contact.add(liste_contacts, "wrap"); // PANEL DYNAMIQUE (BAS GAUCHE) panel_dynamique.setLayout(new CardLayout()); // President President president = new President(num); president.setBorder(BorderFactory.createLineBorder(Color.gray)); panel_dynamique.add(president, "president"); // Tresorier Tresorier tresorier = new Tresorier(num); tresorier.setBorder(BorderFactory.createLineBorder(Color.gray)); panel_dynamique.add(tresorier, "tresorier"); ((CardLayout)panel_dynamique.getLayout()).show(panel_dynamique, "president"); contact.add(panel_dynamique); // AJOUT DES PANELS panel_gauche.add(contact); add(panel_gauche); }// constructeur public static void affichePanel(String panel){ ((CardLayout)panel_dynamique.getLayout()).show(panel_dynamique, panel); } public static void main(String [] args){ JFrame frame= new JFrame(); frame.add(new DossierUnique("69")); frame.setVisible(true); } // main } //class DossierUniqueTresorier:
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 package vue; import java.awt.Color; import java.sql.*; import javax.swing.*; import net.miginfocom.swing.MigLayout; public class President extends JPanel{ // Libellés de president public JLabel lab_pr_civilite = new JLabel("Civilité"); public JLabel lab_pr_nom = new JLabel("Nom"); public JLabel lab_pr_adresse = new JLabel("Adresse"); public JLabel lab_pr_cp = new JLabel("CP"); public JLabel lab_pr_ville = new JLabel("Ville"); public JLabel lab_pr_tel1 = new JLabel("Téléphone 1"); public JLabel lab_pr_tel2 = new JLabel("Téléphone 2"); public JLabel lab_pr_fax = new JLabel("Fax"); public JLabel lab_pr_courriel = new JLabel("Courriel"); public JLabel lab_pr_site = new JLabel("Site"); // Champs textes de president public JTextField champ_pr_titre = new JTextField(6); public JTextField champ_pr_nom = new JTextField(20); public JTextField champ_pr_adresse = new JTextField(30); public JTextField champ_pr_cp = new JTextField(6); public JTextField champ_pr_ville = new JTextField(20); public JTextField champ_pr_tel1 = new JTextField(10); public JTextField champ_pr_tel2 = new JTextField(10); public JTextField champ_pr_fax = new JTextField(10); public JTextField champ_pr_courriel = new JTextField(30); public JTextField champ_pr_site = new JTextField(30); public President(String num){ try { Class.forName(controleur.connexion.pilote); Connection con = DriverManager.getConnection(controleur.connexion.url, controleur.connexion.user, controleur.connexion.password); Statement instruction = con.createStatement(); ResultSet resultat = instruction.executeQuery("SELECT * FROM asso WHERE num_asso="+num); resultat.next(); champ_pr_titre.setText(resultat.getString("pr_titre")); champ_pr_nom.setText(resultat.getString("pr_nom")); champ_pr_adresse.setText(resultat.getString("pr_adresse")); champ_pr_cp.setText(resultat.getString("pr_cp")); champ_pr_ville.setText(resultat.getString("pr_ville")); champ_pr_tel1.setText(resultat.getString("pr_tel1")); champ_pr_tel2.setText(resultat.getString("pr_tel2")); champ_pr_fax.setText(resultat.getString("pr_fax")); champ_pr_courriel.setText(resultat.getString("pr_courriel")); champ_pr_site.setText(resultat.getString("pr_site")); this.setLayout(new MigLayout()); // Civilité du president add(lab_pr_civilite, "align right"); JPanel panel_pr_civilite = new JPanel(); panel_pr_civilite.add(champ_pr_titre); // Nom du president panel_pr_civilite.add(lab_pr_nom, "align right"); panel_pr_civilite.add(champ_pr_nom); add(panel_pr_civilite, "wrap"); // Adresse du president add(lab_pr_adresse, "align right"); JPanel panel_pr_adresse = new JPanel(); panel_pr_adresse.add(champ_pr_adresse); add(panel_pr_adresse, "span, wrap"); // CP du president add(lab_pr_cp, "align right"); JPanel panel_pr_cp = new JPanel(); panel_pr_cp.add(champ_pr_cp); // Ville du president panel_pr_cp.add(lab_pr_ville, "align right"); panel_pr_cp.add(champ_pr_ville); add(panel_pr_cp, "wrap"); // Téléphone 1 du president add(lab_pr_tel1, "align right"); JPanel panel_pr_tel = new JPanel(); panel_pr_tel.add(champ_pr_tel1); // Téléphone 2 du president panel_pr_tel.add(lab_pr_tel2, "align right"); panel_pr_tel.add(champ_pr_tel2); add(panel_pr_tel, "wrap"); // Fax du president add(lab_pr_fax, "align right"); JPanel panel_pr_fax = new JPanel(); panel_pr_fax.add(champ_pr_fax); add(panel_pr_fax, "span, wrap"); // Mail du president add(lab_pr_courriel, "align right"); JPanel panel_pr_courriel = new JPanel(); panel_pr_courriel.add(champ_pr_courriel); add(panel_pr_courriel, "span, wrap"); // Site du president add(lab_pr_site, "align right"); JPanel panel_pr_site = new JPanel(); panel_pr_site.add(champ_pr_site); add(panel_pr_site, "span"); } // Try catch (SQLException ex) { add(new JLabel("Connexion à la base de données impossible")); ex.printStackTrace(); } catch(ClassNotFoundException ex) { add(new JLabel("Pilote de connexion introuvable")); } } // constructeur public static void main(String [] args){ JFrame frame= new JFrame(); frame.add(new President("69")); frame.setVisible(true); } // main } // class PresidentJ'espère que mon code est plus compréhensible et plus cohérent comme ça...
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 package vue; import java.awt.Color; import java.sql.*; import javax.swing.*; import net.miginfocom.swing.MigLayout; public class Tresorier extends JPanel{ // Libellés de tresorier public JLabel lab_tr_civilite = new JLabel("Civilité"); public JLabel lab_tr_nom = new JLabel("Nom"); public JLabel lab_tr_adresse = new JLabel("Adresse"); public JLabel lab_tr_cp = new JLabel("CP"); public JLabel lab_tr_ville = new JLabel("Ville"); public JLabel lab_tr_tel1 = new JLabel("Téléphone 1"); public JLabel lab_tr_tel2 = new JLabel("Téléphone 2"); public JLabel lab_tr_fax = new JLabel("Fax"); public JLabel lab_tr_courriel = new JLabel("Courriel"); public JLabel lab_tr_site = new JLabel("Site"); // Champs textes de tresorier public JTextField champ_tr_titre = new JTextField(6); public JTextField champ_tr_nom = new JTextField(20); public JTextField champ_tr_adresse = new JTextField(30); public JTextField champ_tr_cp = new JTextField(6); public JTextField champ_tr_ville = new JTextField(20); public JTextField champ_tr_tel1 = new JTextField(10); public JTextField champ_tr_tel2 = new JTextField(10); public JTextField champ_tr_fax = new JTextField(10); public JTextField champ_tr_courriel = new JTextField(30); public JTextField champ_tr_site = new JTextField(30); public Tresorier(String num){ try { Class.forName(controleur.connexion.pilote); Connection con = DriverManager.getConnection(controleur.connexion.url, controleur.connexion.user, controleur.connexion.password); Statement instruction = con.createStatement(); ResultSet resultat = instruction.executeQuery("SELECT * FROM asso WHERE num_asso="+num); resultat.next(); champ_tr_titre.setText(resultat.getString("tr_titre")); champ_tr_nom.setText(resultat.getString("tr_nom")); champ_tr_adresse.setText(resultat.getString("tr_adresse")); champ_tr_cp.setText(resultat.getString("tr_cp")); champ_tr_ville.setText(resultat.getString("tr_ville")); champ_tr_tel1.setText(resultat.getString("tr_tel1")); champ_tr_tel2.setText(resultat.getString("tr_tel2")); champ_tr_fax.setText(resultat.getString("tr_fax")); champ_tr_courriel.setText(resultat.getString("tr_courriel")); champ_tr_site.setText(resultat.getString("tr_site")); this.setLayout(new MigLayout()); // Civilité du tresorier add(lab_tr_civilite, "align right"); JPanel panel_tr_civilite = new JPanel(); panel_tr_civilite.add(champ_tr_titre); // Nom du tresorier panel_tr_civilite.add(lab_tr_nom, "align right"); panel_tr_civilite.add(champ_tr_nom); add(panel_tr_civilite, "wrap"); // Adresse du tresorier add(lab_tr_adresse, "align right"); JPanel panel_tr_adresse = new JPanel(); panel_tr_adresse.add(champ_tr_adresse); add(panel_tr_adresse, "span, wrap"); // CP du tresorier add(lab_tr_cp, "align right"); JPanel panel_tr_cp = new JPanel(); panel_tr_cp.add(champ_tr_cp); // Ville du tresorier panel_tr_cp.add(lab_tr_ville, "align right"); panel_tr_cp.add(champ_tr_ville); add(panel_tr_cp, "wrap"); // Téléphone 1 du tresorier add(lab_tr_tel1, "align right"); JPanel panel_tr_tel = new JPanel(); panel_tr_tel.add(champ_tr_tel1); // Téléphone 2 du tresorier panel_tr_tel.add(lab_tr_tel2, "align right"); panel_tr_tel.add(champ_tr_tel2); add(panel_tr_tel, "wrap"); // Fax du tresorier add(lab_tr_fax, "align right"); JPanel panel_tr_fax = new JPanel(); panel_tr_fax.add(champ_tr_fax); add(panel_tr_fax, "span, wrap"); // Mail du tresorier add(lab_tr_courriel, "align right"); JPanel panel_tr_courriel = new JPanel(); panel_tr_courriel.add(champ_tr_courriel); add(panel_tr_courriel, "span, wrap"); // Site du tresorier add(lab_tr_site, "align right"); JPanel panel_tr_site = new JPanel(); panel_tr_site.add(champ_tr_site); add(panel_tr_site, "span"); } // Try catch (SQLException ex) { add(new JLabel("Connexion à la base de données impossible")); ex.printStackTrace(); } catch(ClassNotFoundException ex) { add(new JLabel("Pilote de connexion introuvable")); } } // constructeur public static void main(String [] args){ JFrame frame= new JFrame(); frame.add(new Tresorier("69")); frame.setVisible(true); } // main } // class Tresorier
GRULF
Eh bien soit :
- Tu fait pointer le bon item dans ton combo qui correspondant au panel qui est affiché
- tu affiche le panel qui correspond a l'item sélectionné dans le combo (l'inverse donc)
- tu t'assure que le fenêtre se ferme avec un dispose() (qu'elle est détruite) car là elle doit juste être rendu invisible mais existe toujours
OK je regarderai ça lundi...
Merci encore pour ton aide, bon weekend!
GRULF
Voici le code de Consulter, ma JFrame "consult" qui est celle ouverte par la JFrame "recherche"... C'est sur celle-ci que je dois ferme dispose() à sa fermeture...
Est-ce bien comme ça que je dois faire? Parce que ça ne règle pas le problème...
Et sinon (re)voici le bout de code de DossierUnique où je mets ma JComboBox et mon panel dynamique:
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 package vue; import ...; public class Consulter extends JFrame{ private static final long serialVersionUID = 1L; public Consulter consult; public DossierUnique onglet_dossier_unique; public Consulter(String num_asso) { super("Consulter la fiche d'une association"); // Layout setLayout(new MigLayout()); // Fermeture de JFrame addWindowListener (new WindowAdapter() { public void WindowClosing (WindowEvent e) { consult.dispose(); System.exit(0); } }); // barre de menu JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu fichier = new JMenu("Fichier"); JMenu edition = new JMenu("Edition"); menuBar.add(fichier); menuBar.add(edition); setJMenuBar(menuBar); menuBar.add(fichier); menuBar.add(edition); // Onglets JTabbedPane onglets = new JTabbedPane(SwingConstants.TOP) ; onglet_dossier_unique=new DossierUnique(num_asso); onglets.addTab("Dossier unique", onglet_dossier_unique); Historique onglet_historique = new Historique(num_asso); onglets.addTab("Historique", onglet_historique); onglets.setOpaque(true); add(onglets); }// constructeur consulter }// class Consulter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 // PANEL CONTACT (BAS GAUCHE) contact.setBorder(BorderFactory.createLineBorder(Color.black)); contact.setLayout(new MigLayout()); // Liste déroulante liste_contacts = new JComboBox(new String[] {"president", "tresorier"}); liste_contacts.addActionListener(new but_dossier_unique_liste_contacts()); contact.add(liste_contacts, "wrap"); // PANEL DYNAMIQUE (BAS GAUCHE) panel_dynamique.setLayout(new CardLayout()); President president = new President(num); panel_dynamique.add(president, "president"); ((CardLayout)panel_dynamique.getLayout()).show(panel_dynamique, "president"); contact.add(panel_dynamique);
GRULF
J'ai changé le WindowListener pour fermer la fenêtre:Mais j'ai toujours les mêmes problèmes lorsque je la réouvre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e){ dispose(); } }; addWindowListener(l);
La JComboBox est toujours sur "président" mais le formulaire en-dessous est des fois sur "président", des fois sur "trésorier"
Dans le code de President, j'ai mis un cadre bleu, et dans celui de Tresorier, un cadre vert. Mais le cadre est des fois bleu, des fois vert, sans que le formulaire affiché ne corresponde à la couleur...
Je ne comprend pas...
GRULF
Salut,
Pour être sur de fermé (détruire) ta fenêtre voici seulement une ligne de code à mettre lors de la création de ta fenêtre :
Ta fenêtre sera détruite quand tu cliquera sur la croix en haut à droite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mafenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Si je metsj'ai mes 2 fenêtres qui se ferment... Et je ne veux fermer que 'consult'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part consult.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Si je metsça ne change rien (je peux fermer 'consult', mais si je la réouvre depuis 'recherche', il y a de nouveau des bugs...
Code : Sélectionner tout - Visualiser dans une fenêtre à part consult.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Rappel:
consult --> class Consulter extends JFrame
recherche --> class Recherche extends JFrame
'recherche' ouvre une nouvelle JFrame 'consult' grâce à un bouton
Si je ferme 'consult' et que je reclique sur le bouton de 'recherche', la nouvelle JFrame 'consult' a des problèmes d'affichage...
GRULF
Oui c'était
tu aura corriger par toi-même.
Code : Sélectionner tout - Visualiser dans une fenêtre à part JFrame.DISPOSE_ON_CLOSE
Si ça ne résoud pas le problème, c'est que ma supposition a ce niveau est fausse :
repost ton code (recherche + consult). On va bien trouver.* tu t'assure que le fenêtre se ferme avec un dispose() (qu'elle est détruite) car là elle doit juste être rendu invisible mais existe toujours
Mais l'appel de la classe Consulter se fait grâce à un bouton qui se trouve dans la classe RechercheAssociation, donc je te mets le code du bouton
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 package vue; import java.awt.*; import java.sql.*; import java.util.*; import java.sql.Connection; import java.sql.DriverManager; import vue.*; import javax.swing.*; public class Recherche extends JFrame{ private static final long serialVersionUID = 1L; public Recherche() { super("Recherche d'une association"); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); } }; //reglage de la taille de la fenetre Toolkit k = Toolkit.getDefaultToolkit(); Dimension tailleEcran = k.getScreenSize(); int largeurEcran = tailleEcran.width; int hauteurEcran = tailleEcran.height; addWindowListener(l); setSize(largeurEcran, hauteurEcran-300); // barre de menu JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu fichier = new JMenu("Fichier"); JMenu edition = new JMenu("Identifiants"); menuBar.add(fichier); menuBar.add(edition); setJMenuBar(menuBar); menuBar.add(fichier); menuBar.add(edition); // onglets JTabbedPane onglet = new JTabbedPane(SwingConstants.TOP) ; RechercheAssociation onglet_recherche_association = new RechercheAssociation(); onglet.addTab("Association", onglet_recherche_association); RechercheSubvention onglet_recherche_subvention = new RechercheSubvention(); onglet.addTab("Subvention", onglet_recherche_subvention); onglet.setOpaque(true); add(onglet); }// constructeur consulter public static void main(String [] args){ JFrame frame_recherche= new Recherche(); //frame_recherche.pack(); //frame_recherche.getContentPane(onglet_liste); frame_recherche.setVisible(true); } // main }// class rechercheEt pour la classe Consulter
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 package controleur; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import vue.Consulter; import vue.Recherche; public class but_selection_association implements ActionListener{ String code_asso; int index; public Consulter consult; public void actionPerformed(ActionEvent e) { for (int i=0; i< but_recherche_association.buttons.size(); i++){ if (e.getSource().equals(but_recherche_association.buttons.get(i))){ index=i; } //if } //for code_asso = but_recherche_association.labels.get(index).getText(); consult = new Consulter(code_asso); consult.pack(); consult.setVisible(true); consult.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } //action performed } //class but_selection_associationMerci encore!!!
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 package vue; import java.awt.*; import java.sql.*; import java.util.*; import java.sql.Connection; import java.sql.DriverManager; import vue.*; import javax.swing.*; import net.miginfocom.swing.MigLayout; public class Consulter extends JFrame{ private static final long serialVersionUID = 1L; public DossierUnique onglet_dossier_unique; public Historique onglet_historique; public Consulter(String num_asso) { super("Consulter la fiche d'une association"); // Layout setLayout(new MigLayout()); // barre de menu JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu fichier = new JMenu("Fichier"); JMenu edition = new JMenu("Edition"); menuBar.add(fichier); menuBar.add(edition); setJMenuBar(menuBar); menuBar.add(fichier); menuBar.add(edition); // Onglets JTabbedPane onglets = new JTabbedPane(SwingConstants.TOP) ; onglet_dossier_unique=new DossierUnique(num_asso); onglets.addTab("Dossier unique", onglet_dossier_unique); onglet_historique = new Historique(num_asso); onglets.addTab("Historique", onglet_historique); onglets.setOpaque(true); add(onglets); }// constructeur consulter }// class consulter
GRULF
Il me manque :
RechercheAssociation
RechercheSubvention
DossierUnique
Historique
but_recherche_association
RechercheAssociationbut_recherche_association
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 package vue; import java.awt.CardLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.GridBagLayout; import java.awt.GridLayout; import javax.swing.*; import controleur.but_recherche_association; import net.miginfocom.swing.MigLayout; public class RechercheAssociation extends JPanel{ private static final long serialVersionUID = 1L; public static JPanel liste_haut = new JPanel(); public static JPanel liste_bas = new JPanel(); //public static JPanel vide = new JPanel(); public static JTextField nom_text= new JTextField(20); public static JTextField code_text= new JTextField("",6); public static JTextField sigle_text= new JTextField("",10); public static JTextField but_text= new JTextField("",20); public static JTextField banque_text= new JTextField("",10); public static JTextField text_jo=new JTextField("",6); public static JTextField postal_text= new JTextField("",4); public static JComboBox combo2 = new JComboBox(new String[] {"num_asso","ancien numéro","numéro waldeck"}); public RechercheAssociation (){ setLayout(new MigLayout("wrap")); //JScrollPane haut=new JScrollPane(); JScrollPane bas=new JScrollPane(); //haut.setAutoscrolls(true); bas.setAutoscrolls(true); MigLayout layout=new MigLayout(); liste_haut.setLayout(layout); //haut.getViewport().add(liste_haut); liste_haut.setBorder(BorderFactory.createLineBorder(Color.gray,2)); liste_bas.setLayout(new CardLayout()); //liste_bas.add(vide, "vide"); //liste_bas.add(liste_bas2, "liste_bas2"); //bas.getViewport().add(liste_bas); //liste_bas.setBorder(BorderFactory.createLineBorder(Color.gray,2)); add(liste_haut); add(liste_bas); //code de l'asso liste_haut.add(combo2,"align right"); liste_haut.add(code_text); //nom de l'asso JLabel texte_nom=new JLabel("Nom"); liste_haut.add(texte_nom,"align right"); liste_haut.add(nom_text,"wrap"); //sigle JLabel texte_sigle=new JLabel("Sigle"); liste_haut.add(texte_sigle,"align right"); liste_haut.add(sigle_text); //but JLabel texte_but=new JLabel("But"); liste_haut.add(texte_but,"align right"); liste_haut.add(but_text,"wrap"); //type activité JLabel texte_act=new JLabel("Type d'activité"); liste_haut.add(texte_act,"align right"); String[] activite = new String[3]; activite[0] = new String("activite 1"); activite[1] = new String("activite 2"); activite[2] = new String("activite 3"); DefaultComboBoxModel model = new DefaultComboBoxModel(activite); JComboBox combo = new JComboBox(model); liste_haut.add(combo); //banque JLabel texte_banque=new JLabel("Banque"); liste_haut.add(texte_banque,"align right"); liste_haut.add(banque_text,"wrap"); //panel pour la date de parution au JO JLabel texte_jo=new JLabel("Date de parution au JO"); liste_haut.add(texte_jo,"align right"); liste_haut.add(text_jo); //code postal JLabel texte_postal=new JLabel("Code postal"); liste_haut.add(texte_postal,"align right"); liste_haut.add(postal_text,"wrap"); //types de service JPanel choix_services=new JPanel(); JLabel services=new JLabel("Choix services"); liste_haut.add(services,"align right"); JCheckBox bouton1 = new JCheckBox("Assopass"); choix_services.add(bouton1); JCheckBox bouton2 = new JCheckBox("Formation"); choix_services.add(bouton2); JCheckBox bouton3 = new JCheckBox("Subvention"); choix_services.add(bouton3); JCheckBox bouton4 = new JCheckBox("Paye"); choix_services.add(bouton4); JCheckBox bouton5 = new JCheckBox("Boite aux lettres"); choix_services.add(bouton5); liste_haut.add(choix_services,"span, wrap"); choix_services.setBorder(BorderFactory.createLineBorder(Color.gray,1)); //panel pour le bouton rechercher JButton rechercher=new JButton("Rechercher"); rechercher.addActionListener(new but_recherche_association()); liste_haut.add(rechercher,"span,align center"); }// constructeur RechercheAssociation } //classe RechercheAssociationRem:Je te mets aussi du coup le code du bouton de sélection de l'association but_selection_association
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 package controleur; import java.awt.*; import vue.*; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Vector; import javax.swing.*; import net.miginfocom.swing.MigLayout; import modele.ASSO; import controleur.*; public class but_recherche_association implements ActionListener { //attributs de classe public JPanel liste_bas2 = new JPanel(); public static List<JLabel> labels = new ArrayList<JLabel>(); public static List<JButton> buttons = new ArrayList<JButton>(); public void actionPerformed(ActionEvent e) { String pilote = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost/assobase"; String user = "root"; String password = ""; try { Class.forName(pilote); Connection con = DriverManager.getConnection( url, user, password); Statement instruction = con.createStatement(); //JComboBox combo2 = (JComboBox)e.getSource(); //String select = (String)combo2.getSelectedItem(); String req="SELECT num_asso, nom_complet FROM asso "; req=req+"WHERE nom_complet LIKE '%"+RechercheAssociation.nom_text.getText()+"%' "; req=req+"AND sigle LIKE '%"+RechercheAssociation.sigle_text.getText()+"%' "; req=req+"AND buts LIKE '%"+RechercheAssociation.but_text.getText()+"%' "; //req=req+"AND banque LIKE '%"+recherche_association.banque_text.getText()+"%' "; req=req+"AND date_jo LIKE '%"+RechercheAssociation.text_jo.getText()+"%' "; req=req+"AND ss_cp LIKE '%"+RechercheAssociation.postal_text.getText()+"%' "; //req=req+"AND "+select+" LIKE '%"+recherche_association.code_text.getText()+"%' "; ResultSet resultat = instruction.executeQuery(req); liste_bas2.setLayout(new MigLayout()); ////////////////////////////////////////////////////////////////// //remise Ã* zero de la recherche liste_bas2 = new JPanel(); labels = new ArrayList<JLabel>(); buttons = new ArrayList<JButton>(); liste_bas2.setLayout(new MigLayout()); JLabel code_asso = new JLabel (" Code "); JLabel nom_asso = new JLabel (" Nom "); code_asso.setBorder(BorderFactory.createLineBorder(Color.black)); nom_asso.setBorder(BorderFactory.createLineBorder(Color.black)); liste_bas2.add(code_asso); liste_bas2.add(nom_asso,"wrap"); int i = 0; while(resultat.next()){ labels.add(i,new JLabel(resultat.getString("num_asso"))); buttons.add(i,new JButton(resultat.getString("nom_complet"))); buttons.get(i).addActionListener(new but_selection_association()); i++; } // while for (int j=0; j< labels.size(); j++){ liste_bas2.add(labels.get(j),"align center"); liste_bas2.add(buttons.get(j),"wrap"); buttons.get(j).setContentAreaFilled(false) ; buttons.get(j).setFocusPainted(false); //buttons.get(j).setBorderPainted(false); } //for RechercheAssociation.liste_bas.add(liste_bas2,"liste_bas2"); liste_bas2.revalidate(); ((CardLayout)RechercheAssociation.liste_bas.getLayout()).show(RechercheAssociation.liste_bas, "liste_bas2"); } //try catch (SQLException ex) { System.out.println("connexion impossible" );} catch(ClassNotFoundException ex) {System.out.println("classe pilote non trouvée" );} } //action performed }//classDossierUnique
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 package controleur; import java.awt.*; import javax.swing.*; import vue.*; public class but_selection_association implements ActionListener{ String code_asso; int index; public Consulter consult; public void actionPerformed(ActionEvent e) { for (int i=0; i< but_recherche_association.buttons.size(); i++){ if (e.getSource().equals(but_recherche_association.buttons.get(i))){ index=i; } //if } //for code_asso = but_recherche_association.labels.get(index).getText(); consult = new Consulter(code_asso); consult.pack(); consult.setVisible(true); consult.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } //action performed } //class but_selection_associationRem: Dans DossierUnique, il y a des JPanels déclarés qui ne servent pas là, mais il serviront après (il y a également un JPanel "panel_droit" que j'ai viré pour alléger un peu)
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 package vue; import java.awt.*; import java.sql.*; import controleur.*; import javax.swing.*; import com.sun.java.swing.plaf.motif.MotifBorders.BevelBorder; import net.miginfocom.swing.MigLayout; public class DossierUnique extends JPanel { // Panels public JPanel panel_gauche = new JPanel(); public JPanel contact = new JPanel(); public static JPanel panel_dynamique = new JPanel(); // Liste déroulante public JComboBox liste_contacts; // Variables public static String num_asso; private final long serialVersionUID = 1L; public DossierUnique(String num){ num_asso=num; // MISE EN PAGE setLayout(new MigLayout("","left","top")); //setOpaque(true); //setVisible(true); ///////////////// //PANEL GAUCHE // ///////////////// panel_gauche.setLayout(new MigLayout()); // PANEL CONTACT (BAS GAUCHE) contact.setBorder(BorderFactory.createLineBorder(Color.black)); contact.setLayout(new MigLayout()); // Liste déroulante liste_contacts = new JComboBox(new String[] {"president", "tresorier"}); liste_contacts.addActionListener(new but_dossier_unique_liste_contacts()); contact.add(liste_contacts, "wrap"); // PANEL DYNAMIQUE (BAS GAUCHE) panel_dynamique.setLayout(new CardLayout()); // President President president = new President(num); //Tresorier tresorier = new Tresorier(num); panel_dynamique.add(president, "president"); //panel_dynamique.add(tresorier, "tresorier"); ((CardLayout)panel_dynamique.getLayout()).show(panel_dynamique, "president"); contact.add(panel_dynamique); // AJOUT DES PANELS panel_gauche.add(contact); add(panel_gauche); }// constructeur public static void affichePanel(String panel){ ((CardLayout)panel_dynamique.getLayout()).show(panel_dynamique, panel); } } //class dossier_unique
Et je te met aussi but_dossier_unique_liste_contacts qui permet de sélectionner le pannel à afficher en fonction de la JComboBoxEnfin il y a les 2 JPanels President et Tresorier qui sont ceux qui doivent s'afficher en fonction de la JComboBox 'liste_contacts'
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 package controleur; import java.awt.CardLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.JComboBox; import javax.swing.JPanel; import vue.*; public class but_dossier_unique_liste_contacts implements ActionListener { public void actionPerformed(ActionEvent e) { JComboBox cb = (JComboBox)e.getSource(); String select = (String)cb.getSelectedItem(); String num_asso = DossierUnique.num_asso; if (select.equals("president")) {President president = new President(num_asso); DossierUnique.panel_dynamique.add(president, "president"); ((CardLayout)DossierUnique.panel_dynamique.getLayout()).show(DossierUnique.panel_dynamique, "president"); } else if (select.equals("tresorier")) {Tresorier tresorier = new Tresorier(num_asso); DossierUnique.panel_dynamique.add(tresorier, "tresorier"); ((CardLayout)DossierUnique.panel_dynamique.getLayout()).show(DossierUnique.panel_dynamique, "tresorier"); } } }
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 package vue; 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 javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import net.miginfocom.swing.MigLayout; public class President extends JPanel{ // Libellés de president public JLabel lab_pr_civilite = new JLabel("Civilité"); public JLabel lab_pr_nom = new JLabel("Nom"); public JLabel lab_pr_adresse = new JLabel("Adresse"); public JLabel lab_pr_cp = new JLabel("CP"); public JLabel lab_pr_ville = new JLabel("Ville"); public JLabel lab_pr_tel1 = new JLabel("Téléphone 1"); public JLabel lab_pr_tel2 = new JLabel("Téléphone 2"); public JLabel lab_pr_fax = new JLabel("Fax"); public JLabel lab_pr_courriel = new JLabel("Courriel"); public JLabel lab_pr_site = new JLabel("Site"); // Champs textes de president public JTextField champ_pr_titre = new JTextField(6); public JTextField champ_pr_nom = new JTextField(20); public JTextField champ_pr_adresse = new JTextField(30); public JTextField champ_pr_cp = new JTextField(6); public JTextField champ_pr_ville = new JTextField(20); public JTextField champ_pr_tel1 = new JTextField(10); public JTextField champ_pr_tel2 = new JTextField(10); public JTextField champ_pr_fax = new JTextField(10); public JTextField champ_pr_courriel = new JTextField(30); public JTextField champ_pr_site = new JTextField(30); public President(String num){ // Bordure setBorder(BorderFactory.createLineBorder(Color.blue)); try { Class.forName(controleur.connexion.pilote); Connection con = DriverManager.getConnection(controleur.connexion.url, controleur.connexion.user, controleur.connexion.password); Statement instruction = con.createStatement(); ResultSet resultat = instruction.executeQuery("SELECT * FROM asso WHERE num_asso="+num); resultat.next(); champ_pr_titre.setText(resultat.getString("pr_titre")); champ_pr_nom.setText(resultat.getString("pr_nom")); champ_pr_adresse.setText(resultat.getString("pr_adresse")); champ_pr_cp.setText(resultat.getString("pr_cp")); champ_pr_ville.setText(resultat.getString("pr_ville")); champ_pr_tel1.setText(resultat.getString("pr_tel1")); champ_pr_tel2.setText(resultat.getString("pr_tel2")); champ_pr_fax.setText(resultat.getString("pr_fax")); champ_pr_courriel.setText(resultat.getString("pr_courriel")); champ_pr_site.setText(resultat.getString("pr_site")); this.setLayout(new MigLayout()); // Civilité du president add(lab_pr_civilite, "align right"); JPanel panel_pr_civilite = new JPanel(); panel_pr_civilite.add(champ_pr_titre); // Nom du president panel_pr_civilite.add(lab_pr_nom, "align right"); panel_pr_civilite.add(champ_pr_nom); add(panel_pr_civilite, "wrap"); // Adresse du president add(lab_pr_adresse, "align right"); JPanel panel_pr_adresse = new JPanel(); panel_pr_adresse.add(champ_pr_adresse); add(panel_pr_adresse, "span, wrap"); // CP du president add(lab_pr_cp, "align right"); JPanel panel_pr_cp = new JPanel(); panel_pr_cp.add(champ_pr_cp); // Ville du president panel_pr_cp.add(lab_pr_ville, "align right"); panel_pr_cp.add(champ_pr_ville); add(panel_pr_cp, "wrap"); // Téléphone 1 du president add(lab_pr_tel1, "align right"); JPanel panel_pr_tel = new JPanel(); panel_pr_tel.add(champ_pr_tel1); // Téléphone 2 du president panel_pr_tel.add(lab_pr_tel2, "align right"); panel_pr_tel.add(champ_pr_tel2); add(panel_pr_tel, "wrap"); // Fax du president add(lab_pr_fax, "align right"); JPanel panel_pr_fax = new JPanel(); panel_pr_fax.add(champ_pr_fax); add(panel_pr_fax, "span, wrap"); // Mail du president add(lab_pr_courriel, "align right"); JPanel panel_pr_courriel = new JPanel(); panel_pr_courriel.add(champ_pr_courriel); add(panel_pr_courriel, "span, wrap"); // Site du president add(lab_pr_site, "align right"); JPanel panel_pr_site = new JPanel(); panel_pr_site.add(champ_pr_site); add(panel_pr_site, "span"); } // Try catch (SQLException ex) { add(new JLabel("Connexion à la base de données impossible")); ex.printStackTrace(); } catch(ClassNotFoundException ex) { add(new JLabel("Pilote de connexion introuvable")); } } // constructeur public static void main(String [] args){ JFrame frame= new JFrame(); frame.add(new President("69")); frame.setVisible(true); } // main } // classeRem: Je t'ai pas mis Historique ni RechercheSubvention parce que les classes ne sont pas écrites encore, juste créées...
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 package vue; 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 javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import net.miginfocom.swing.MigLayout; public class Tresorier extends JPanel{ // Libellés de tresorier public JLabel lab_tr_civilite = new JLabel("Civilité"); public JLabel lab_tr_nom = new JLabel("Nom"); public JLabel lab_tr_adresse = new JLabel("Adresse"); public JLabel lab_tr_cp = new JLabel("CP"); public JLabel lab_tr_ville = new JLabel("Ville"); public JLabel lab_tr_tel1 = new JLabel("Téléphone 1"); public JLabel lab_tr_tel2 = new JLabel("Téléphone 2"); public JLabel lab_tr_fax = new JLabel("Fax"); public JLabel lab_tr_courriel = new JLabel("Courriel"); public JLabel lab_tr_site = new JLabel("Site"); // Champs textes de tresorier public JTextField champ_tr_titre = new JTextField(6); public JTextField champ_tr_nom = new JTextField(20); public JTextField champ_tr_adresse = new JTextField(30); public JTextField champ_tr_cp = new JTextField(6); public JTextField champ_tr_ville = new JTextField(20); public JTextField champ_tr_tel1 = new JTextField(10); public JTextField champ_tr_tel2 = new JTextField(10); public JTextField champ_tr_fax = new JTextField(10); public JTextField champ_tr_courriel = new JTextField(30); public JTextField champ_tr_site = new JTextField(30); public Tresorier(String num){ // Bordure setBorder(BorderFactory.createLineBorder(Color.green)); try { Class.forName(controleur.connexion.pilote); Connection con = DriverManager.getConnection(controleur.connexion.url, controleur.connexion.user, controleur.connexion.password); Statement instruction = con.createStatement(); ResultSet resultat = instruction.executeQuery("SELECT * FROM asso WHERE num_asso="+num); resultat.next(); champ_tr_titre.setText(resultat.getString("tr_titre")); champ_tr_nom.setText(resultat.getString("tr_nom")); champ_tr_adresse.setText(resultat.getString("tr_adresse")); champ_tr_cp.setText(resultat.getString("tr_cp")); champ_tr_ville.setText(resultat.getString("tr_ville")); champ_tr_tel1.setText(resultat.getString("tr_tel1")); champ_tr_tel2.setText(resultat.getString("tr_tel2")); champ_tr_fax.setText(resultat.getString("tr_fax")); champ_tr_courriel.setText(resultat.getString("tr_courriel")); champ_tr_site.setText(resultat.getString("tr_site")); this.setLayout(new MigLayout()); // Civilité du tresorier add(lab_tr_civilite, "align right"); JPanel panel_tr_civilite = new JPanel(); panel_tr_civilite.add(champ_tr_titre); // Nom du tresorier panel_tr_civilite.add(lab_tr_nom, "align right"); panel_tr_civilite.add(champ_tr_nom); add(panel_tr_civilite, "wrap"); // Adresse du tresorier add(lab_tr_adresse, "align right"); JPanel panel_tr_adresse = new JPanel(); panel_tr_adresse.add(champ_tr_adresse); add(panel_tr_adresse, "span, wrap"); // CP du tresorier add(lab_tr_cp, "align right"); JPanel panel_tr_cp = new JPanel(); panel_tr_cp.add(champ_tr_cp); // Ville du tresorier panel_tr_cp.add(lab_tr_ville, "align right"); panel_tr_cp.add(champ_tr_ville); add(panel_tr_cp, "wrap"); // Téléphone 1 du tresorier add(lab_tr_tel1, "align right"); JPanel panel_tr_tel = new JPanel(); panel_tr_tel.add(champ_tr_tel1); // Téléphone 2 du tresorier panel_tr_tel.add(lab_tr_tel2, "align right"); panel_tr_tel.add(champ_tr_tel2); add(panel_tr_tel, "wrap"); // Fax du tresorier add(lab_tr_fax, "align right"); JPanel panel_tr_fax = new JPanel(); panel_tr_fax.add(champ_tr_fax); add(panel_tr_fax, "span, wrap"); // Mail du tresorier add(lab_tr_courriel, "align right"); JPanel panel_tr_courriel = new JPanel(); panel_tr_courriel.add(champ_tr_courriel); add(panel_tr_courriel, "span, wrap"); // Site du tresorier add(lab_tr_site, "align right"); JPanel panel_tr_site = new JPanel(); panel_tr_site.add(champ_tr_site); add(panel_tr_site, "span"); } // Try catch (SQLException ex) { add(new JLabel("Connexion à la base de données impossible")); ex.printStackTrace(); } catch(ClassNotFoundException ex) { add(new JLabel("Pilote de connexion introuvable")); } } // constructeur public static void main(String [] args){ JFrame frame= new JFrame(); frame.add(new Tresorier("69")); frame.setVisible(true); } // main } // classe
REMARQUE
Je t'ai tout mis, parce qu'il y a vraiment plein de classes qui s'appellent les unes les autres, mais ça doit être imbuvable... Du coup je sais pas si ça vaut le coup que tu te plonges là dedans, il y en a sûrement pour des heures à comprendre.
Je vais peut-être abandonné le principe de la JComboBox (et du CardLayout) pour mettre des onglets... Ça sera un peu chargé mais tant pis.
Dis-moi ce que t'en penses, parce que ça risque de pas être très drôle de lire tout ça
GRULF
Je crois que tu avais modifié ton code, car quand je cliquait sur rechercher ca ajoutait un panel avec des labels => but_recherche_association
mais j'ai modifier maintenant ca m'ouvre ta fenetre => but_selection_association
C'est bien ca ?
Mais je ne vois pas trop ton problème d'affichage, peut-tu me rappeler ce qui ne va pas exactement ?
president est en bleu
tresorier en vert
Et quand tu sélectionne soit l'un ou l'autre dans ta combobox parfois les panels sont interverti.
Tu demande president et tu as le panel vert (qui devrait être tresorier) et vice versa ?
Bah oui c'est ça, à la 2ème ouverture, dès fois les couleurs sont inversées.
Et à la 2ème ouverture, les champs sont parfois remplis avec ceux de président, parfois avec ceux de trésorier... Les infos sont cherchées dans une base de données, donc je vois que les champs sont intervertis grâce au remplissage de ces champs (je suis assez clair?).
GRULF
Je crois avoir trouvé
Ton précédent panel demeurre dans ton cardLayout (que je connais pas trop donc je peut pas trop te donner plus d'explication).
En le supprimant (DossierUnique.panel_dynamique.removeAll(), cela devient correct, mais il faut faire un revalidate() pour que l'affiche soit bon aussi.
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 import java.awt.CardLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JComboBox; public class but_dossier_unique_liste_contacts implements ActionListener { public void actionPerformed(ActionEvent e) { JComboBox cb = (JComboBox) e.getSource(); String select = (String) cb.getSelectedItem(); String num_asso = DossierUnique.num_asso; if (select.equals("president")) { DossierUnique.panel_dynamique.removeAll(); President president = new President(num_asso); DossierUnique.panel_dynamique.add(president, "president"); ((CardLayout) DossierUnique.panel_dynamique.getLayout()).show( DossierUnique.panel_dynamique, "president"); DossierUnique.panel_dynamique.revalidate(); } else if (select.equals("tresorier")) { DossierUnique.panel_dynamique.removeAll(); Tresorier tresorier = new Tresorier(num_asso); DossierUnique.panel_dynamique.add(tresorier, "tresorier"); ((CardLayout) DossierUnique.panel_dynamique.getLayout()).show( DossierUnique.panel_dynamique, "tresorier"); DossierUnique.panel_dynamique.revalidate(); } } }
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 import java.awt.*; import javax.swing.*; import net.miginfocom.swing.MigLayout; @SuppressWarnings("serial") public class DossierUnique extends JPanel { // Panels public JPanel panel_gauche = new JPanel(); public JPanel contact = new JPanel(); public static JPanel panel_dynamique = new JPanel(); // Liste déroulante public JComboBox liste_contacts; // Variables public static String num_asso; public DossierUnique(String num) { num_asso = num; // MISE EN PAGE setLayout(new MigLayout("", "left", "top")); //setOpaque(true); //setVisible(true); ///////////////// //PANEL GAUCHE // ///////////////// panel_gauche.setLayout(new MigLayout()); // PANEL CONTACT (BAS GAUCHE) contact.setBorder(BorderFactory.createLineBorder(Color.black)); contact.setLayout(new MigLayout()); // Liste déroulante liste_contacts = new JComboBox( new String[] { "president", "tresorier" }); System.out.println("liste_contacts JComboBox"); liste_contacts .addActionListener(new but_dossier_unique_liste_contacts()); contact.add(liste_contacts, "wrap"); // PANEL DYNAMIQUE (BAS GAUCHE) panel_dynamique.setLayout(new CardLayout()); // President panel_dynamique.removeAll(); President president = new President(num); //Tresorier tresorier = new Tresorier(num); panel_dynamique.add(president, "president"); panel_dynamique.revalidate(); //panel_dynamique.add(tresorier, "tresorier"); ((CardLayout) panel_dynamique.getLayout()).show(panel_dynamique, "president"); contact.add(panel_dynamique); // AJOUT DES PANELS panel_gauche.add(contact); add(panel_gauche); }// constructeur public static void affichePanel(String panel) { ((CardLayout) panel_dynamique.getLayout()).show(panel_dynamique, panel); } } //class dossier_unique
Hallelujah!!! Et bah oui ça a l'air de marcher nickel... Et maintenant j'ai compris le principe de removeAll() et du revalidate(), donc je vais pouvoir le refaire tout seul!
En tout cas merci beaucoup, c'est vraiment sympa de t'être impliqué autant dans mon problème!
GRULF
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager