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

Agents de placement/Fenêtres Java Discussion :

JFrame qui se superpose à elle-même


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut JFrame qui se superpose à elle-même
    Bonjour,
    J'ai une JFrame qui s'appelle "recherche". Grâce à une fonction de recherches, elle permet d'afficher une liste d'associations. En cliquant sur l'une d'elles, une autre JFrame "dossier_unique" s'ouvre par dessus avec son dossier, modifiable. On peut sauvegarder les modifs que l'on a faites et tout se sauvegarde bien dans une base de données.

    Problème: Lorsque je ferme "dossier_unique" et que je reclique sur l'association précédemment modifiée dans la JFrame "recherche", le "dossier_unique" se réouvre, mais en superposition à celui que je viens de fermer...

    Le code du bouton qui ouvre la JFrame est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    JFrame f= new consulter(code_asso);
    	      f.pack();
    	      f.setVisible(true);
    Y'a-t-il une astuce?

    Sinon, y'a-t-il moyen de complètement supprimer la JFrame "dossier_unique" lors de sa fermeture?
    Rmq: Pour fermer, j'utilise la croix Windows en haut de la fenêtre...

    Merci
    GRULF

  2. #2
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Salut,

    Pour fermer ta fenêtre au clic sur la croix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monDialogue.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    Par du code, fait :

  3. #3
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    Ca ne change rien à mon problème. Voici la JFrame que me crée la classe "recherche":



    Si je clique sur l'asso sfgjsfjsfj, voici, la JFrame créée par la classe "dossier_unique":



    Si je ferme cette JFrame (la JFrame "recherche" est toujours derrière) et que je reclique sur l'asso sfgjsfjsfj, voici, la JFrame (re)créée par la classe "dossier_unique":



    J'ai l'impression que la 2nde JFrame créée par "dossier_unique" se superpose à la 1ère, alors que je l'avais fermée... En mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monDialogue.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    sur ma JFrame ou
    sur l'action de mon bouton "Sauvegarde", cela ne change pas le problème (mais la JFrame se ferme bien toute seule lors de la sauvegarde)

    De plus, plus je ferme la fenêtre et je la réouvre en cliquant sur l'asso, plus certains textes deviennent gras (d'où le fait que la JFrame se superpose à elle-même...)
    GRULF

  4. #4
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Je t'avais mal compris, je pensais que tu voulais fermer tes frames.

    Mais c'est le même objet fenêtre (la même JFrame) ou bien ce sont deux objets différent (deux JFrame) car on a l'impression sur tes copies d'écran que des composants sont ajoutés dans un panel qui posséde déjà des composants, d'où cette superposition.
    Pardonne moi, mais c'est pas facile de saisir ton problème.

  5. #5
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    C'est vrai que c'est pas facile à comprendre...
    C'est effectivement la même JFrame que je réaffiche. Et donc ce que je voudrais c'est que les composants de la JFrame lors de son 1er affichage soient supprimés avant son 2ème affichage (lors du 2ème clic).
    Soit supprimer les composants à la fermeture de la fenêtre.
    Soit supprimer les composants (et fermer la fenêtre) lors d'un clic sur le bouton "Sauvegarder"
    Soit supprimer les composants et ajouter les nouveaux lors du clic sur l'association (qui ouvre donc la JFrame en question)

    J'espère que le problème s'éclaircit pour toi...
    GRULF

  6. #6
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    Lorsque l'on clique sur le bouton de l'association pour ouvrir sa fiche, le code suivant ouvre la JFrame "dossier_unique":
    (la classe "consulter" extends JFrame...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    consulter consult = new consulter(code_asso);
    consult.pack();
    consult.setVisible(true);
    Le problème c'est qu'à chaque fois que je clique sur une asso, c'est toujours la JFrame consult qui est crée (et elle conserve les composants de l'appel précédent...)
    GRULF

  7. #7
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Peut-être conviendrait-il de supprimer tous les composant déjà ajouter a ton panel avant d'en ajouter d'autres.
    http://java.sun.com/javase/6/docs/ap...tml#removeAll()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maFrame.getContentPane().removeAll();
    Pourquoi ne pas avoir deux fenêtre différente ?

  8. #8
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    Le removeAll ne change rien...
    Comme ça, j'ai ma nouvelle frame vide (normal):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    consult = new consulter(code_asso);
    consult.getContentPane().removeAll();
    consult.pack();
    consult.setVisible(true);
    Si je mets ça, Eclipse me dit
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    Parce qu'il ne connaît pas encore consult je suppose...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    consult.getContentPane().removeAll();
    consult = new consulter(code_asso);
    consult.pack();
    consult.setVisible(true);
    Et si je mets ça, il y a encore des superpositions...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    consult = new consulter(code_asso);
    consult.getContentPane().removeAll();
    consult = new consulter(code_asso);
    consult.pack();
    consult.setVisible(true);
    GRULF

  9. #9
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Post plus de code parce que là, c'est difficile de t'aider...

  10. #10
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    Merci, et bon courage:

    Classe du bouton sur lequel on clique pour sélectionner une asso
    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
    package controleur;
     
    import ...
     
    public class but_selection_association implements  ActionListener{
     
    	String code_asso;
    	int index;
     
    	public static 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.getContentPane().removeAll();
    		consult = new consulter(code_asso);
    	   	consult.pack();
    	   	consult.setVisible(true);
    consult.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
     
    	} //action performed
    } //class but_selection_association
    Je ne mets pas la classe qui crée la liste des assos et les boutons appelant la classe précédente (Il ne devrait pas y avoir de problème puisque la classe précédente est bien appelée avec le num_asso voulu.

    Classe "consulter" qui crée la JFrame avec les 2 onglets "Dossier unique" et "Historique". C'est cette JFrame qui bug!
    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
    package vue;
     
    import ...
     
    public class consulter extends JFrame{
     
    	private static final long serialVersionUID = 1L;
     
    	public static consulter consult;
     
    	public consulter(String num_asso) {
    		  super("Consulter la fiche d'une association");
     
    		  // Layout
    	      setLayout(new CardLayout());
     
    	      // 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 onglet = new JTabbedPane(SwingConstants.TOP) ;
    	      dossier_unique onglet_dossier_unique=new dossier_unique(num_asso);
    	      onglet.addTab("Dossier unique", onglet_dossier_unique);
    	      historique onglet_historique = new historique(num_asso);
    	      onglet.addTab("Historique", onglet_historique);
    	      onglet.setOpaque(true);	      
    	      add(onglet, "onglets");
     
    	   }// constructeur consulter
    }// class consulter
    Et la classe "dossier_unique" qui constitue le 1er onglet de la JFrame consult:
    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
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    package vue;
     
    import ...
     
    public class dossier_unique extends JPanel {
     
    	// Panels
    	public static JPanel panel_gauche = new JPanel();
    	public static JPanel panel_droit = new JPanel();
     
    	public static JPanel association = new JPanel();
    	public static JPanel contact = new JPanel();
    	public static JPanel panel_dynamique = new JPanel();
     
    	// Activités
    	private static String[] activites = new String[] {"Cinéma", "Musique", "Danse", "Peinture", "Sport", "Quartier", "Sculpture", "Informatique", "Littérature"};
     
    	// Checkbox
    	public static Checkbox check_cinema = new Checkbox();
    	public static Checkbox check_musique = new Checkbox();
    	public static Checkbox check_danse = new Checkbox();
    	public static Checkbox check_peinture = new Checkbox();
    	public static Checkbox check_sport = new Checkbox();
    	public static Checkbox check_quartier = new Checkbox();
    	public static Checkbox check_sculpture = new Checkbox();
    	public static Checkbox check_informatique = new Checkbox();
    	public static Checkbox check_litterature = new Checkbox();
    	// Valeurs des Checkbox
    	public static String val_cinema;
    	public static String val_musique;
    	public static String val_danse;
    	public static String val_peinture;
    	public static String val_sport;
    	public static String val_quartier;
    	public static String val_sculpture;
    	public static String val_informatique;
    	public static String val_litterature;
    	// Libellés des checkbox
    	public static JLabel lab_check_cinema = new JLabel("Cinéma");
    	public static JLabel lab_check_musique = new JLabel("Musique");
    	public static JLabel lab_check_danse = new JLabel("Danse");
    	public static JLabel lab_check_peinture = new JLabel("Peinture");
    	public static JLabel lab_check_sport = new JLabel("Sport");
    	public static JLabel lab_check_quartier = new JLabel("Quartier");
    	public static JLabel lab_check_sculpture = new JLabel("Sculpture");
    	public static JLabel lab_check_informatique = new JLabel("Informatique");
    	public static JLabel lab_check_litterature = new JLabel("Littérature");
     
    	// Liste déroulante
    	public static JComboBox liste_contacts = new JComboBox(new String[] {"siege_social", "president", "tresorier", "representant1", "representant2"});
     
    	// Libellés de association
    	public static JLabel lab_vide = new JLabel(" ");
    	public static JLabel lab_association = new JLabel("Association");
    	public static JLabel lab_numero = new JLabel("Numéro");
    	public static JLabel lab_sigle = new JLabel("Sigle");
    	public static JLabel lab_nom_complet = new JLabel("Nom complet");
    	public static JLabel lab_date_jo = new JLabel("Parution au JO");
    	public static JLabel lab_date_modif = new JLabel("Dernière modification");
    	public static JLabel lab_banque = new JLabel("Banque");
    	public static JLabel lab_act_principale = new JLabel("Activité pricipale");
    	public static JLabel lab_act_secondaires = new JLabel("Activités secondaires");
     
    	// Champs textes de Association
    	public static JTextField champ_num_asso = new JTextField(10);
    	public static JTextField champ_sigle = new JTextField(10);
    	public static JTextArea champ_nom_complet = new JTextArea(2,30);
    	public static JTextField champ_date_jo = new JTextField(10);
    	public static JTextField champ_date_modif = new JTextField(10);
    	public static JTextArea champ_buts = new JTextArea(10,40);
    	public static JTextField champ_banque = new JTextField(30);
     
    	// Variables
    	public static ResultSet resultat;
    	public static String num_asso;
    	private static final long serialVersionUID = 1L;
     
    	// Polices
    	Font titre1 = new Font("Arial", Font.BOLD, 14);
    	Font alerte = new Font("Arial", Font.BOLD, 14);
     
    	public dossier_unique(String num){
     
    		num_asso=num;
    		// MISE EN PAGE
    		setLayout(new MigLayout("","left","top"));
    		setOpaque(true);
    		setVisible(true);
     
    		// CONNEXION A LA BDD
    	    	  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();
     
    	    	  // INITIALISATION DES CHAMPS
    	    	  // Association
    	    	  champ_num_asso.setText(resultat.getString("num_asso"));
    	    	  champ_sigle.setText(resultat.getString("sigle"));
    	    	  champ_nom_complet.setText(resultat.getString("nom_complet"));
    	    	  champ_date_jo.setText(resultat.getString("date_jo"));
    	    	  champ_date_modif.setText(resultat.getString("date_modif"));
    	    	  champ_buts.setText(resultat.getString("buts"));
    	    	  champ_banque.setText(resultat.getString("banque"));
    	    	  // Activités secondaire
    	    	  val_cinema=resultat.getString("act_cinema");
    	    	  val_musique=resultat.getString("act_musique");
    	    	  val_danse=resultat.getString("act_danse");
    	    	  val_peinture=resultat.getString("act_peinture");
    	    	  val_sport=resultat.getString("act_sport");
    	    	  val_quartier=resultat.getString("act_quartier");
    	    	  val_sculpture=resultat.getString("act_sculpture");
    	    	  val_informatique=resultat.getString("act_informatique");
    	    	  val_litterature=resultat.getString("act_litterature");
    	    	  if (val_cinema.equals("2")) {check_cinema.setState(true);}
    	    	  if (val_musique.equals("2")) {check_musique.setState(true);}
    	    	  if (val_danse.equals("2")) {check_danse.setState(true);}
    	    	  if (val_peinture.equals("2")) {check_peinture.setState(true);}
    	    	  if (val_sport.equals("2")) {check_sport.setState(true);}
    	    	  if (val_quartier.equals("2")) {check_quartier.setState(true);}
    	    	  if (val_sculpture.equals("2")) {check_sculpture.setState(true);}
    	    	  if (val_informatique.equals("2")) {check_informatique.setState(true);}
    	    	  if (val_litterature.equals("2")) {check_litterature.setState(true);}
    	    	  // Siège Social
    	    	  siege_social.champ_ss_adresse.setText(resultat.getString("ss_adresse"));
    	    	  siege_social.champ_ss_cp.setText(resultat.getString("ss_cp"));
    	    	  siege_social.champ_ss_ville.setText(resultat.getString("ss_ville"));
    	    	  siege_social.champ_ss_tel1.setText(resultat.getString("ss_tel1"));
    	    	  siege_social.champ_ss_tel2.setText(resultat.getString("ss_tel2"));
    	    	  siege_social.champ_ss_fax.setText(resultat.getString("ss_fax"));
    	    	  siege_social.champ_ss_courriel.setText(resultat.getString("ss_courriel"));
    	    	  siege_social.champ_ss_site.setText(resultat.getString("ss_site"));
    	    	  // Président
    	    	  president.champ_pr_titre.setText(resultat.getString("pr_titre"));
    	    	  president.champ_pr_nom.setText(resultat.getString("pr_nom"));
    	    	  president.champ_pr_adresse.setText(resultat.getString("pr_adresse"));
    	    	  president.champ_pr_cp.setText(resultat.getString("pr_cp"));
    	    	  president.champ_pr_ville.setText(resultat.getString("pr_ville"));
    	    	  president.champ_pr_tel1.setText(resultat.getString("pr_tel1"));
    	    	  president.champ_pr_tel2.setText(resultat.getString("pr_tel2"));
    	    	  president.champ_pr_fax.setText(resultat.getString("pr_fax"));
    	    	  president.champ_pr_courriel.setText(resultat.getString("pr_courriel"));
    	    	  president.champ_pr_site.setText(resultat.getString("pr_site"));
    	    	  // Trésorier
    	    	  tresorier.champ_tr_titre.setText(resultat.getString("tr_titre"));
    			  tresorier.champ_tr_nom.setText(resultat.getString("tr_nom"));
    			  tresorier.champ_tr_adresse.setText(resultat.getString("tr_adresse"));
    			  tresorier.champ_tr_cp.setText(resultat.getString("tr_cp"));
    			  tresorier.champ_tr_ville.setText(resultat.getString("tr_ville"));
    			  tresorier.champ_tr_tel1.setText(resultat.getString("tr_tel1"));
    			  tresorier.champ_tr_tel2.setText(resultat.getString("tr_tel2"));
    			  tresorier.champ_tr_fax.setText(resultat.getString("tr_fax"));
    			  tresorier.champ_tr_courriel.setText(resultat.getString("tr_courriel"));
    			  tresorier.champ_tr_site.setText(resultat.getString("tr_site"));
    			  // Représentant 1
    			  representant1.champ_rp1_titre.setText(resultat.getString("rp1_titre"));
    			  representant1.champ_rp1_nom.setText(resultat.getString("rp1_nom"));
    			  representant1.champ_rp1_adresse.setText(resultat.getString("rp1_adresse"));
    			  representant1.champ_rp1_cp.setText(resultat.getString("rp1_cp"));
    			  representant1.champ_rp1_ville.setText(resultat.getString("rp1_ville"));
    			  representant1.champ_rp1_tel1.setText(resultat.getString("rp1_tel1"));
    			  representant1.champ_rp1_tel2.setText(resultat.getString("rp1_tel2"));
    			  representant1.champ_rp1_fax.setText(resultat.getString("rp1_fax"));
    			  representant1.champ_rp1_courriel.setText(resultat.getString("rp1_courriel"));
    			  representant1.champ_rp1_site.setText(resultat.getString("rp1_site"));
    			  // Représentant 2
    			  representant2.champ_rp2_titre.setText(resultat.getString("rp2_titre"));
    			  representant2.champ_rp2_nom.setText(resultat.getString("rp2_nom"));
    			  representant2.champ_rp2_adresse.setText(resultat.getString("rp2_adresse"));
    			  representant2.champ_rp2_cp.setText(resultat.getString("rp2_cp"));
    			  representant2.champ_rp2_ville.setText(resultat.getString("rp2_ville"));
    			  representant2.champ_rp2_tel1.setText(resultat.getString("rp2_tel1"));
    			  representant2.champ_rp2_tel2.setText(resultat.getString("rp2_tel2"));
    			  representant2.champ_rp2_fax.setText(resultat.getString("rp2_fax"));
    			  representant2.champ_rp2_courriel.setText(resultat.getString("rp2_courriel"));
    			  representant2.champ_rp2_site.setText(resultat.getString("rp2_site"));
     
    		/////////////////
    		//PANEL GAUCHE //
    		/////////////////
     
    		panel_gauche.setLayout(new MigLayout());
     
    		// PANEL ASSOCIATION (HAUT GAUCHE)
    		association.setBorder(BorderFactory.createLineBorder(Color.black));
    		association.setLayout(new MigLayout());
    			// Affichage de "Association"
    			lab_association.setFont(titre1);
    			association.add(lab_association, "span, wrap");
    			// Numéro de l'association
    			association.add(lab_numero, "align right");
    			association.add(champ_num_asso);
    			// Sigle de l'association
    			association.add(lab_sigle);
    			association.add(champ_sigle,"wrap");
    			// Nom de l'association
    			association.add(lab_nom_complet, "align right");
    				champ_nom_complet.setLineWrap(true);
    				champ_nom_complet.setWrapStyleWord(true);
    				champ_nom_complet.setBorder(BorderFactory.createLineBorder(Color.gray));
    			association.add(champ_nom_complet, "span, wrap");
    			// Date de parution au JO
    			association.add(lab_date_jo, "align right");
    			association.add(champ_date_jo, "wrap, span");
    			// Date de dernière modification
    			association.add(lab_date_modif, "align right");
    			JTextField date_modif = new JTextField(10);
    			association.add(date_modif, "wrap, span");
     
    		// 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());
    			// Siege social
    			siege_social siege_social = new siege_social();
    			siege_social.setBorder(BorderFactory.createLineBorder(Color.gray));
    			panel_dynamique.add(siege_social, "siege_social");
    			// President
    			president president = new president();
    			president.setBorder(BorderFactory.createLineBorder(Color.gray));
    			panel_dynamique.add(president, "president");
    			// Tresorier
    			tresorier tresorier = new tresorier();
    			tresorier.setBorder(BorderFactory.createLineBorder(Color.gray));
    			panel_dynamique.add(tresorier, "tresorier");
    			// Representant1
    			representant1 representant1 = new representant1();
    			representant1.setBorder(BorderFactory.createLineBorder(Color.gray));
    			panel_dynamique.add(representant1, "representant1");
    			// Representant2
    			representant2 representant2 = new representant2();
    			representant2.setBorder(BorderFactory.createLineBorder(Color.gray));
    			panel_dynamique.add(representant2, "representant2");
    		contact.add(panel_dynamique);
     
     
    		// AJOUT DES PANELS
    			panel_gauche.add(association, "wrap");
    			panel_gauche.add(contact);
     
    		/////////////////
    		// PANEL DROIT //
    		/////////////////
     
    			panel_droit.setBorder(BorderFactory.createLineBorder(Color.black));
    			panel_droit.setLayout(new MigLayout());
    			// Buts
    			panel_droit.add(new JLabel("Buts"), "align left, span 2, wrap");
    				champ_buts.setLineWrap(true);
    				champ_buts.setWrapStyleWord(true);
    				JScrollPane scroll_buts = new JScrollPane();
    				scroll_buts.setBorder(BorderFactory.createLineBorder(Color.gray));
    				scroll_buts.getViewport().add(champ_buts);
    			panel_droit.add(scroll_buts, "span 2, wrap");
    			// Passage d'une ligne
    			panel_droit.add(lab_vide, "span, wrap");
    			// Activité principale
    			panel_droit.add(lab_act_principale, "align right");
    			JComboBox activite_principale = new JComboBox(activites);
    			panel_droit.add(activite_principale, "wrap");
    			// Activités secondaires
    			panel_droit.add(lab_act_secondaires, "align right");
    			JPanel panel_activites_2nd = new JPanel();
    			panel_activites_2nd.setLayout(new MigLayout());
    				// Checkbox
    				panel_activites_2nd.add(check_cinema);
    				panel_activites_2nd.add(lab_check_cinema);
    				panel_activites_2nd.add(check_musique);
    				panel_activites_2nd.add(lab_check_musique);
    				panel_activites_2nd.add(check_danse);
    				panel_activites_2nd.add(lab_check_danse, "wrap");
    				panel_activites_2nd.add(check_peinture);
    				panel_activites_2nd.add(lab_check_peinture);
    				panel_activites_2nd.add(check_sport);
    				panel_activites_2nd.add(lab_check_sport);
    				panel_activites_2nd.add(check_quartier);
    				panel_activites_2nd.add(lab_check_quartier, "wrap");
    				panel_activites_2nd.add(check_sculpture);
    				panel_activites_2nd.add(lab_check_sculpture);
    				panel_activites_2nd.add(check_informatique);
    				panel_activites_2nd.add(lab_check_informatique);
    				panel_activites_2nd.add(check_litterature);
    				panel_activites_2nd.add(lab_check_litterature);
    			panel_droit.add(panel_activites_2nd, "wrap");
    			// Passage d'une ligne
    			panel_droit.add(new JLabel(" "), "span, wrap");
    			// Banque
    			panel_droit.add(lab_banque, "align right");
    			panel_droit.add(champ_banque);
     
    		/////////////////////////////////////////////////////////////////////////////////
     
    		add(panel_gauche);
    		add(panel_droit, "wrap");
     
    		// Bouton de sauvegarde
    		JButton sauvegarde_dossier_unique = new JButton("Sauvegarder");
    		sauvegarde_dossier_unique.addActionListener(new but_dossier_unique_sauvegarde());
    		add(sauvegarde_dossier_unique, "align right, span 2");
     
    	    	  } // Try
    	    	  catch (SQLException ex)
    	    	  {
    	    		add(new JLabel("Connexion à la base de données impossible"));
    		      }
    	    	  catch(ClassNotFoundException ex)
    	    	  {
    		    	add(new JLabel("Pilote de connexion introuvable"));
    			  }
     
    	}// constructeur
     
    } //class dossier_unique
    N'ai pas peur du code de dossier_unique, je vais t'expliquer rapidement...
    Etant donné que c'est un formulaire, j'ai déclaré tous les JLabels, JTextField, JComboBox, etc en variables de classe.
    Il y a 2 gros panels "panel_gauche" et "panel_droit".
    Dans "panel_gauche", il y a le panel "association" (partie supérieure) et le panel "contacts" (partie inférieure)
    Le "panel_contact" charge en fait 5 autres panels définis dans leurs classes respectives, et s'affiche selon la valeur sélectionnée dans la JComboBox "liste_contacts"

    Remarque: Lorsque je testai avec Eclipse juste la classe "consulter" sans qu'il y ait la JFrame précédentes permettant de sélectionner l'asso, tout marchait bien (je lui donnait un num_asso "en dur")
    Donc je ne pense pas qu'il y a vraiment d'erreur dans la classe "consulter" ou "dossier_unique"?

    Merci beaucoup, j'espère que mon code n'est pas trop imbuvable...
    GRULF

  11. #11
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Supprime le "static" de tout tes objets de dossier_unique, et ça marche !

    Tu doit aussi fermer la fenêtre avant d'en ouvrir une autre, a moins que ce soit le comportement que tu cherche.

  12. #12
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    Merci beaucoup! Effectivement c'est beaucoup mieux, mais quelques problèmes persistent...
    J'ai besoin de consulter les valeurs des champs de l'association
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public  JTextField champ_num_asso = new JTextField(10);
    ...
    dans la fonction du bouton de sauvegarde, et s'ils ne sont pas en static, ça ne marche pas, il ne peut pas y accéder...
    De même dans la classe qui gère l'action de la liste déroulante sur le panel dynamique, la fonction doit accéder à panel_dynamique, mais ne peut pas si le panel n'est pas déclaré static
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    package controleur;
     
    import ...
     
    public class but_dossier_unique_liste_contacts implements ActionListener {
     
    	public void actionPerformed(ActionEvent e) {
    		JComboBox cb = (JComboBox)e.getSource();
    		String select = (String)cb.getSelectedItem();
    		((CardLayout)dossier_unique.panel_dynamique.getLayout()).show(dossier_unique.panel_dynamique, select);
    	}
    }
    Et si je mets juste ce qu'il y a besoin en static, il y a encore des bugs d'affichage dans le panel dynamique...

    Je vais mettre des fonctions get() dans dossier unique pour récupérer les valeurs des champs (et je ne mets pas le static) mais pour le panel_dynamique je ne vois pas trop comment faire...

    PS: Merci encore!!!
    GRULF

  13. #13
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Au lieu d'utiliser this pour accéder a ces champs dans ton actionPerformed procède de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    but_dossier_unique_liste_contacts.this.champ_num_asso
    Au fait essaie de respecter les conventions de nommages java, là j'ai un peu l'impression de lire du chinois (surtout avec un nom de classe comme çà que l'on ne peut vraiment distinguer d'un nom de variable) http://java.developpez.com/faq/java/...ention_nommage
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  14. #14
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    C'est que dans but_dossier_unique_liste_contacts (qui devrait s'appeler ButDossierUniqueListeContacts) tu devrait avoir une instance de dossier_unique (qui devrait s'appeler DossierUnique).
    Comme tu as déclaré public ton panel_dynamique dans dossier_unique, tu pourra le récupérer.
    Au passage c'est pas super de déclarer tes attributs de classe en public, mais bon... Rome ne s'est pas construite en 1 jours

  15. #15
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    Je changerai les noms des classes demain, c'est noté... Et pour les variables public, j'en prends note aussi!

    Par contre pour déclarer une instance de dossier_unique (qui devrait s'appeler DossierUnique... ) je fais comme ça, mais ça doit pas être ça (ou ça suffit pas) parce que Eclipse me dit toujours'Cannot make a static reference to the non-static field dossier_unique.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
    package controleur;
     
    import ...
     
    public class but_dossier_unique_liste_contacts implements ActionListener {
     
    	public void actionPerformed(ActionEvent e) {
     
    		Class.forName("vue.dossier_unique").newInstance();
     
    		JComboBox cb = (JComboBox)e.getSource();
    		String select = (String)cb.getSelectedItem();
    		((CardLayout)dossier_unique.panel_dynamique.getLayout()).show(dossier_unique.panel_dynamique, select);
    	}
    }
    GRULF

  16. #16
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Ainsi tu créé une instance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DossierUnique monDossier = new DossierUnique();
    l'instance se nomme monDossier.

    Ensuite, tu fait référence à panel_dynamique par ton objet monDossier et non plus par la classe DossierUnique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monDossier.panel_dynamique
    Tu ne peux plus faire reference à panel_dynamique par la classe DossierUnique, car elle n'est plus static. Ce code est faux et Eclipse te dit (à juste titre) que tu fait une référence static à un attribut de classe qui ne l'est pas.

    Ce code est faux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dossier_unique.panel_dynamique

  17. #17
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    J'ai encore des problèmes... J'ai mis ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void actionPerformed(ActionEvent e) {		
     
    		dossier_unique monDossier = new dossier_unique(dossier_unique.champ_num_asso.getText());
     
    		JComboBox cb = (JComboBox)e.getSource();
    		String select = (String)cb.getSelectedItem();
    		((CardLayout)monDossier.panel_dynamique.getLayout()).show(monDossier.panel_dynamique, select);
    	}
    et j'obtiens ça quand je change la liste déroulante: (problème d'affichage au niveau de la liste, et le formulaire en-dessous n'est plus mis à jour)



    et si je clique ailleurs dans la frame j'ai ça:



    Je pense que c'est parce que la nouvelle instance que je crée n'est pas insérée dans la frame? Mais j'ai essayé plusieurs trucs mais j'ai tout le temps des erreurs...
    GRULF

  18. #18
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Visiblement, il y a des composants qui ne sont pas ajoutés au Layout, voir second capture écran.

    Perso, je virerais tous les static, qui pour moi ne sont pas intéressant dans ce cas.

    Ensuite tu peut aussi, dans un nouveau projet, isolé ton mécanisme de passage de frame et de panel, sans accès aux données et avec moins de composants, pour travailler et mettre au point ce mécanisme.

    Peut-être aussi peut-tu en profiter pour faire une conception plus simple, plus efficace et fiable.

  19. #19
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 100
    Points : 57
    Points
    57
    Par défaut
    OK j'avais pas fait gaffe, mais il me restait des static dans mes classes "president", "tresorier", etc. c'est-à-dire, les JPanels qui sont affichés en fonction de la liste déroulante...

    Mais le problème, c'est que je peux virer les static des JLabels sans problème, mais pas ceux des JTextField... Si je les vire, je ne peux plus faire de setText() ou de getString() dessus...

    Faut-il que je refasse comme pour le panel_dynamique et recréer une instance de chacun des JTextField? Je te demande avant, parce que j'ai environ une centaine de JTextFields à traiter si c'est le cas...

    Ou il y a-t-il une autre façon de faire un truc du genre, sans qu'Eclipse refuse d'accéder à l'élément parce qu'il n'est pas static:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tresorier.champ_tr_titre.setText(resultat.getString("tr_titre"));
    GRULF

  20. #20
    Membre expérimenté
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 050
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 050
    Points : 1 340
    Points
    1 340
    Par défaut
    Justement, c'est là où on peut évidement ce demander si ton choix de conception est le plus pertinent.

    C'est le même problème qu'avant. Comme tes JTextField ne sont plus static tu ne peut plus y accéder par la classe.

    avec la classe tresorier, ceci est devenu faux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tresorier.champ_tr_titre
    Si ces composants JTextField sont déclarés public, tu pourra y accéder par l'instance :

    Il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tresorier montresorier = new tresorier();
    montresorier.champ_tr_titre

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/07/2012, 18h56
  2. Réponses: 9
    Dernier message: 28/12/2011, 12h16
  3. [Entité-Association] Table qui se référence elle-même ou simplicité ?
    Par Invité dans le forum Schéma
    Réponses: 15
    Dernier message: 15/10/2008, 10h27
  4. Réponses: 5
    Dernier message: 28/05/2008, 16h18
  5. Une iframe qui se supprime elle-même
    Par jibouze dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 19/12/2005, 10h11

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