Se connecter / S'enregistrer
Votre question

passer un argument entre deux JFrames

Tags :
  • Java
  • Programmation
Dernière réponse : dans Programmation
16 Novembre 2011 14:24:50

Bonjour à tous,je reviens avec mon problème de passage de paramètre entre deux JFrame,j’ai amenagé mon code peut-être qu’une bonne volonté pourra m’aider cette fois ci.
J’ai un JFrame nommée (FormChoixRegistre1) contituée d’un Jtable d’une colonne et contenant quelque données. Je voudrais arriver à remplir un combox du 2ème Jframe nommé (FormANaiss1) avec les données du JTable.
Pour cela,jai crée une référence de FormANaiss1 et je l’ai passée en parametre du constructeur de
FormChoixRegistre1 comme ceci :

  1. public final class FormChoixRegistre1 extends javax.swing.JFrame {
  2. private FormANaiss1 formNaiss; //reference à FormANaiss1
  3. private int colNo;
  4. private Object objects[];
  5. /** Creates new form FormChoixRegistre */
  6. public FormChoixRegistre1(FormANaiss1 fan) { //contructeur parameter avec la JFrame FormANaiss1
  7. this.formNaiss=fan;
  8. initComponents();
  9. setResizable(false);
  10. setLocationRelativeTo(null);
  11. listeRegistre();
  12. TxtNbRegistreDispo.setText(Integer.toString(aModel.getRowCount()));
  13. }

Et voici le code de la 2eme JFrame

  1. public final class FormANaiss1 extends javax.swing.JFrame {
  2. /** Creates new form FormANaiss */
  3. private javax.swing.JComboBox CmbCodeRegistre;
  4. public FormANaiss1() {
  5.  
  6.  
  7. initComponents();
  8. setSize(807, 645);
  9. setLocationRelativeTo(null);
  10. }
  11. Private void initComponents(){
  12. }
  13. public void setRegistres(Object reg) {//setter de remplisage du combobox
  14. this.CmbCodeRegistre.addItem(reg);
  15. }
  16. }

Et à partir de là je suis un peu perdu,je ne sais plus comment faire pour récuperer les données dans le combo.et Pourtant il faut que j’arrive à vaincre cette difficulté,et ce ne sera pas le cas sans l’aide des uns et des autres.Merci pour votre comprehension.

Autres pages sur : passer argument jframes

a c 232 L Programmation
16 Novembre 2011 14:29:39

Salut,

Est-ce qu'on pourrait avoir des infos sur la façon dont ton programme s'organise ?
Tu as les deux Frames ouvertes en même temps ? Un clic sur un bouton ouvre la 2ème Frame ? ou autres ?
16 Novembre 2011 14:45:35

Non les deux Jframes ne sont pas ouvertes en même,on renseigne d'abord le Jtable du frame (FormChoixRegistre1 ),et on recupere ces données dans le combo du Frame (FormANaiss) afin d'y effectuer des traitements.c'est après fermeture de FormChoixRegistre1 que les données sont balancées dans le combo,comme ceci:

  1. private void CmdQuitterActionPerformed(java.awt.event.ActionEvent evt) {
  2. final int[] rep = new int[1];
  3. rep[0] = JOptionPane.showConfirmDialog(null, "Voulez-vous vraiment quitter cette fenêtre?", "Quitter", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
  4. if (rep[0] == JOptionPane.YES_OPTION) //System.exit(6);
  5. {
  6. for(int i=0;i<bModel.getRowCount();i++){
  7. formNaiss.setRegistres(bModel.getValueAt(i, colNo));
  8. }
  9. this.setVisible(false);
  10. }
  11.  
  12. }
Contenus similaires
a c 232 L Programmation
16 Novembre 2011 15:43:23

Bah ton code ne fait pas ce que tu v eux là ? il a l'air de prendre les valeurs de ta Table pour les insérer dans la combobox de ta 2ème frame, non ?
16 Novembre 2011 16:18:41

Non il ne fait pas ce que je veux justement,lorsque j'ouvre FormANaiss1 mon combo reste vide.ce que je ne comprend pas toujours.je me dis que mon probleme doit setrouver au niveau du chargement du combo dans le constructeur de FormANaiss1.je me suis servi du setter pour le remplir,mais comment pouvoir l'utilliser dans mon constructeur?
a c 232 L Programmation
16 Novembre 2011 21:25:18

Est-ce que ton combo est bien initialisé ? Il ne l'est pas dans le code que tu as donné (au cas où...).
Tu ne peux pas faire du Debug pas à pas pour voir ce qui se passe ?
17 Novembre 2011 15:45:14

Bonjour Omar,le Debug ne me signale pas d'erreur.oui le Combo est bien initialisé.les traitements de ce frame ne peuvent commencer que dès lors que le combo contient des données que l'utiliateur pourra selectionné.c'est à partir de cette selection que tout doit se faire en fait,d'ou l'importance de pouvoir le remplir au demarrage du frame.

voici le code :

  1. public final class FormANaiss1 extends javax.swing.JFrame {
  2. /** Creates new form FormANaiss */
  3. private javax.swing.JComboBox CmbCodeRegistre;
  4. public FormANaiss1() {
  5. initComponents();
  6. setSize(807, 645);
  7. setLocationRelativeTo(null);
  8. }
  9. Private void initComponents(){
  10. CmbCodeRegistre = new javax.swing.JComboBox();
  11. }
a c 232 L Programmation
17 Novembre 2011 16:14:28

Je veux dire, quand tu débug ta fonction CmdQuitterActionPerformed, est-ce que tu la vois bien passer dans ton for qui boucle sur les lignes de ta table ou pas ?
17 Novembre 2011 17:16:07

Salut Omar ,je crois que vous avez raison "

Code Java :

  1. this.formNaiss.setRegistres(getListeRegistreCharger().get(k));

ne marche pas, puisque mon combo reste vide.par contre, etant dans mon formulaire je constate que quand je fais :

Code Java :

  1. System.out.println(getListeRegistreCharger().get(k));
que getListeRegistreCharger() contient les données.

Est ce la methode setRegistres()de FormANaiss1 qui ne marche pas? la voici:

Code Java :

  1. public void setRegistres(Object reg) {
  2. this.CmbCodeRegistre.addItem(reg);
  3.  
  4. /*je me disais qu'en lui fournissant comme parametre la valeur à l'indice *k de getListeRegistreCharger() depuis FormChoixRegistre1 ça aurait *marcher,mais c'est pas le cas
  5. */
  6. }

Est ce qu'en le remplacant par celui ci:

Code Java :

  1. public void setRegistre(DefaultTableModel dtf) {//setter de remplisage du combobox
  2. this.CmbCodeRegistre.addItem(dtf);
  3. }

et en modifiant la methode getListeRegistreCharger() pour lui passer en parametre le modele(bModel) de ma table,mon souci ne serait pas reglé? du genre :

Au lieu de celui ci :

Code Java :

  1. private void CmdQuitterActionPerformed(java.awt.event.ActionEvent evt) {
  2. final int[] rep = new int[1];
  3. rep[0] = JOptionPane.showConfirmDialog(null, "Voulez-vous vraiment quitter cette fenêtre?", "Quitter", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
  4. if (rep[0] == JOptionPane.YES_OPTION) //System.exit(6);
  5. {
  6. for(int k=0;k<getListeRegistreCharger().size();k++){
  7.  
  8. /*tentative de remplir le combo a travers la method getListeRegistreCharger()*/
  9.  
  10. this.formNaiss.setRegistres(getListeRegistreCharger().ge(k));
  11. System.out.println(getListeRegistreCharger().get(k));
  12. }
  13. this.setVisible(false);
  14. }
  15. }

je fais celui là :

Code Java :

  1. private void CmdQuitterActionPerformed(java.awt.event.ActionEvent evt) {
  2. final int[] rep = new int[1];
  3. rep[0] = JOptionPane.showConfirmDialog(null, "Voulez-vous vraiment quitter cette fenêtre?", "Quitter", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
  4. if (rep[0] == JOptionPane.YES_OPTION) //System.exit(6);
  5. {
  6. formNaiss.setRegistre(this.getDefault());
  7. this.setVisible(false);//fermé la ferme en cours.ou si on veut System.exit(6);
  8. }
  9. }

avec getDefault() qui retourne le model de la table comme ceci :

Code Java :

  1. public DefaultTableModel getDefault(){
  2. return bModel;
  3. }


et meme comment dès lors que je récupere le model de la table par :

Code Java :

  1. public void setRegistre(DefaultTableModel dtf) {//setter de remplisage du combobox
  2. this.CmbCodeRegistre.addItem(dtf);
  3. }

pourrais-je l'utilisé dans le constructeur de ma frame afin d'avoir le combo rempli au demarrage de la fenetre?
a c 232 L Programmation
17 Novembre 2011 18:14:13

Oula... non, ne passe pas de DefaultTableModel comme paramètre.

Est-ce que ça t'affiche quelque chose et ce qu'il faut quand tu fais ça :
  1. public void setRegistres(Object reg) {
  2. System.out.println(reg);
  3. this.CmbCodeRegistre.addItem(reg);
  4. }
17 Novembre 2011 18:31:05

non ça ne m'affiche rien,enfin ,je sais plus en fait,puisque je penses qu'il faudrait que je l'appele dans le constructeur,et je ne sais pas quel parametre dois-je lui passé.

  1. public void setRegistres(Object reg) {
  2. System.out.println(reg);
  3. this.CmbCodeRegistre.addItem(reg);
  4. }


j'ai essayer celui là:

  1. public final class FormANaiss1 extends javax.swing.JFrame {
  2.  
  3. /** Creates new form FormANaiss */
  4. public FormANaiss1( ) {
  5. FormChoixRegistre1 formChoixReg=new FormChoixRegistre1(this);
  6.  
  7. setSize(807, 645);
  8. setLocationRelativeTo(null);
  9. initComponents();
  10. this.setRegistres(formChoixReg.);
  11.  
  12. setRegistres(formChoixReg);
  13.  
  14. }
il m'affiche une longue description de Jframe,loin d'etre ce que j'attends.
a c 232 L Programmation
17 Novembre 2011 18:39:04

Oula... mais t'as tout modifié ton code de partout... j'peux pas te donner un truc à modifier, alors que y'a plus rien qu'est identique...
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS