Difficulté dans la gestion alternée de deux formulaires

Difficulté dans la gestion alternée de deux formulaires - Java - Programmation

Marsh Posté le 20-11-2013 à 23:02:58    

Bonsoir, voici ce que je veux arriver à réaliser et que je n’arrive pas. Dans mon application, je dispose d’un formulaire qui doit contenir une quantité importante de champs à renseigner, j’ai donc décidé de créer deux formulaires.(si vous voulez une principale et une secondaire). Sur chacun d’eux je dispose d’un bouton pour naviguer entre eux. Par exemple sur le formulaire principal,  le bouton (suite) permettra d’aller sur le formulaire secondaire, et le bouton (Précédent) du formulaire secondaire pour revenir vers le formulaire principal. Tel que je l’ai fait, lorsque je clique sur le bouton (suite) une instance du formulaire  secondaire se crée, puis lorsque je  clique sur le bouton (précédent) une autre instance du formulaire principal se crée. Au finish avec 10 clicks sur chacun de ces boutons, j’ai 10 instances de formulaire, ce qui n’est pas mon objectif. Moi j’aimerais, selon que je click sur le bouton (suite) ou (précédent) appelé respectivement le même formulaire secondaire ou le même formulaire  principal  et pas une instance de ceux-ci. J’espère m’être fait comprendre ?
Voici mes codes:  
Code du formulaire principal (FormANaiss)
 

Code :
  1. public  class FormANaiss extends javax.swing.JFrame {
  2. private void CmdSuiteActionPerformed(java.awt.event.ActionEvent evt) {                                       
  3.         // TODO add your handling code here:
  4.         ActeNaissSuite suite= new ActeNaissSuite(); // création de l’instance du formulaire secondaire
  5.         suite.setVisible(true);
  6.     }           
  7. }


 
 
Code du formulaire secondaire (ActeNaissSuite )
 

Code :
  1. public class ActeNaissSuite extends javax.swing.JFrame {
  2. private void CmdPcdtActionPerformed(java.awt.event.ActionEvent evt) {                                       
  3.         // TODO add your handling code here:
  4.         FormANaiss frmANaiss= new FormANaiss();//création de l’instance du formulaire principal
  5.         frmANaiss.setVisible(true);
  6.     }
  7. }


                           
Aussi je voudrais pouvoir arriver à conserver les données dans les champs lorsque j’appelle chacun de ces formulaires. Merci encore

Reply

Marsh Posté le 20-11-2013 à 23:02:58   

Reply

Marsh Posté le 21-11-2013 à 15:59:13    

Salut

 

J'suis surement pas a jour sur les best practices en programmation objet donc si ya mieux, n'hesitez pas a vous manifester.
Vite fait et surement avec le moins de modifications, ce qu'il faut faire c'est declarer l'"autre" formulaire comme une variable dans chaque formulaire, et faire en sorte que les references soient connues d'un objet a l'autre.

 

Vite fait, pas teste, syntaxe probablement pourrie:

 

Formulaire principal:

Code :
  1. public  class FormANaiss extends javax.swing.JFrame {
  2. // Pas 100% sur que ca marche - c'est possible que tu doives le declarer null et lui assigner le New ActeNaissSuite(this) dans le constructeur
  3. protected ActeNaissSuite suite = new ActeNaissSuite(this);
  4. private void CmdSuiteActionPerformed(java.awt.event.ActionEvent evt) {                                       
  5.         // TODO add your handling code here:
  6.         suite.setVisible(true);
  7.     }           
  8. }


Formulaire secondaire:

Code :
  1. public class ActeNaissSuite extends javax.swing.JFrame {
  2. protected FormANaiss frmANaiss;
  3. public void ActeNaissSuite(FormANaiss frmANaiss) {
  4.         this.frmANaiss = frmANaiss;
  5. }
  6. private void CmdPcdtActionPerformed(java.awt.event.ActionEvent evt) {                                       
  7.         // TODO add your handling code here:
  8.         frmANaiss.setVisible(true);
  9.     }
  10. }



Message édité par lasnoufle le 21-11-2013 à 16:01:20

---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 22-11-2013 à 01:44:41    

Merci beaucoup lasnoufle pour ta réponse qui m'a sauvé,c'est exactement ce que je recherchais. Encore une fois thanks.

Reply

Marsh Posté le 22-11-2013 à 01:47:48    

Merci encore.

Reply

Marsh Posté le 28-11-2013 à 03:37:24    

Salut à vous,quelqu'un peut il me dire pourquoi mon Formulaire FormANaiss n'arrive t-il pas à communiquer avec le formulaire ActeNaissSuite? Je pose cette question parce que je n'arrive pas à renseigner le champ txtCodeEnf du formulaire ActeNaissSuite par la valeur TxtCodeActe du formulaire "FormANaiss" de depuis lui? Pourtant il faut que je puisse le faire.
 
Code du formulaire FormANaiss :
 

Code :
  1. public final class FormANaiss extends javax.swing.JFrame {
  2.   private javax.swing.JTextField TxtCodeActe;
  3.   private ActeNaissSuite suite = new ActeNaissSuite(this); // instance du formulaire ActeNaissSuite
  4.    public FormANaiss() {
  5.        initComponents();
  6.    }
  7. private void cmdSuiteActionPerformed(java.awt.event.ActionEvent evt) {                                       
  8.          suite.setVisible(true);
  9.                  suite.setTxtCodeEnf(getTxtCodeActe());/* je veux remplir le champ txtCodeEnf de ActeNaissSuite à partir de ce formulaire par le bouton suite,mais pas moyen.j'ai l'impression  qu'il ne sais pas communiqué avec ActeNaissSuite */   
  10.     }   
  11. public static void main(String args[]) {
  12.         java.awt.EventQueue.invokeLater(new Runnable() {
  13.             @Override
  14.             public void run() {
  15.                 new FormANaiss().setVisible(true);
  16.             }
  17.         });
  18.     }       
  19. public String getTxtCodeActe() {
  20.         return TxtCodeActe.getText().trim();
  21.     }
  22. }


 
code du formulaire ActeNaissSuite :
 

Code :
  1. public class ActeNaissSuite extends javax.swing.JFrame {
  2.    private FormANaiss frmANaiss;// instance de FormANaiss
  3. private String txtCodeEnf;
  4. public ActeNaissSuite(FormANaiss frmANaiss) {
  5.         this.frmANaiss = frmANaiss;
  6.         initComponents();
  7. }
  8. private void CmdPcdtActionPerformed(java.awt.event.ActionEvent evt) {                                       
  9.         // TODO add your handling code here:
  10.          frmANaiss.setVisible(true);// Appel du formulaire FormANaiss
  11.     }   
  12. public void setTxtCodeEnf (String txtCodeEnf) { // accesseur que j'utilise dans FormANaiss pour remplir champ txtCodeEnf
  13.         this.txtCodeEnf = txtCodeEnf;
  14.     }
  15. public static void main(String args[]) {
  16.         java.awt.EventQueue.invokeLater(new Runnable() {
  17.             @Override
  18.             public void run() {
  19.                 FormANaiss frmNaiss= new FormANaiss();
  20.                 new ActeNaissSuite(frmNaiss).setVisible(true);
  21.             }
  22.         });
  23.     }
  24. }

Reply

Marsh Posté le 29-11-2013 à 06:01:12    

Ton code a l'air OK a premiere vue, comment tu sais que ca marche pas?
As-tu essaye d'appeler setTxtCodeEnf() avant le setVisible(true)? P'tetre que ActeNaissSuite est modal et donc quand elle passe visible le code se suspend?
Sinon j'sais pas.


---------------
C'était vraiment très intéressant.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed