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

 Java Discussion :

formulaire saisie dynamique


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut formulaire saisie dynamique
    Bonjour,

    J'ai besoin d'aide (encore)
    La situation :
    J'ai besoin de faire une fonction de saisie dynamique.
    telle que dans l'onglet concerné :
    Bouton -> ouvre une LocalFrame
    jusque là c'est bon

    avec un affichage dynamique des élements suivants
    Solde actuel
    Nouveau Solde
    Prix à payer

    en focntion des autres objets :
    1 spinner (saisie quantité des utilisateurs)
    une combo box (tarifs/volumes)

    Ce que je pense devoir faire :
    Nouveau Solde = Solde actuel + valeur du spinner
    Prix a payer = valeur spinner * valeur combobox
    synchroniser la combobox au spinner tel que
    spinnervalue (0-1000) valeur combo 0.12;
    spinnervalue (1000-2000) valeur combo 0.11;
    etc..
    mais aussi en sens inverse

    seulement voilà les valeurs des objets sont pas tous de type double, ni int

    alors je ne sais pas comment m'y prendre.

    un petit exemple/explicatif serai bien venue afin que je puisse progresser ... parceque là ... Bien que je progresse, cette fonction je ne m'en sort pas.


    J'ai testé des bidouillages tels que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String TexteSoldeAvantModification = String.valueOf(SoldeAvantModification);
                SoldeActuel.setText(TexteSoldeAvantModification);
                String TextNouveauSoldeCalcul = String.valueOf(NouveauSoldeCalcul);
                NouveauSolde.setText(TextNouveauSoldeCalcul);
                NouveauSoldeCalcul=SoldeAvantModification + (NU*PU);
                String TextNouveauSommeAPayer = String.valueOf(NouveauSoldeCalcul);
    mais sans aucun résultat

    deplus pour que l'affichage des valeur soit mis à jour dans la frame de façon dynamique j'ai tanté une boucle do...while sur un boolean (testant l'appuis des boutton Payer/annuler) mais ça m'a bloqué le programme (j"ai du faire un KILL) dessus pour pouvoir l'arreter....

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    J'ai tenté une autre approche sans plus de succès....



    j'arrives pas a trouver d'exemple ou tuto sur ce point....

    est ce donc seulement possible dans ce langage ?
    de manipuler des objets de type differents pour en influancer d'autres ?



    je veux tout simplement que :
    changer dans le spin -> combobox selectionne la bonne valeur
    changement dans la combobox -> spin selectionne la bonne valeur
    l'un comme l'autre le calcul du nouveau solde (ancien+valeur spinner) se fasse
    l'un comme l'aurte que le calcule de prix (spinner*combobox se fasse)

    ça doit bien etre possible ... je vous en prie je pete un plomb là je comprend pas COMMENT faire, toutes mes tentatives sont des échecs cuisants avec des messages d'erreurs dans tous les sens insolubles pour un débutant comme moi.

    PS: le formulaire est bon puisque si je mets des valeurs en dur dans le spinner, dans le combo et dans la solde initial ça marche. le calcul de prix et du nouveau solde sont ok.



    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
     
        private void Calcul(boolean c) {
            // TODO transformer les valeurs brutes en valeurs réelles
            // issues de la BDD
            int VSoldeActuel ; // devra etre appele dans la BDD.
            double VCoutPrevu ; // prix a payer affiché avant payement
            int VChoixNUnitees ; // spinner nombre d'unite valeur par defaut
            double VTarifUnite ; // valeur par unite (degressif)
            if (c) {
                  VSoldeActuel = 0 ; // devra etre appele dans la BDD.
                  VCoutPrevu = 0.0 ; // prix a payer affiché avant payement
                  VChoixNUnitees = 1000 ; // spinner nombre d'unite valeur par defaut
                  int CHOIXUTILISATEUR = Integer.parseInt(ChoixNUnute.getValue().toString());
                  VChoixNUnitees = CHOIXUTILISATEUR ;
                  switch(VChoixNUnitees) {
                      //TODO interroger la BASE DE DONNEE !!
                  /*
                   * pour tests
                   */
                      case 1000 - 5000 :
                          VTarifUnite = 0.12 ;
                          break;
                      case 5001 - 10000 :
                          VTarifUnite = 0.11 ;
                          break;
                      default :
                          VTarifUnite = 0.13 ;
                          break;
                  }
            } else {
                  VSoldeActuel = 0 ; // devra etre appele dans la BDD.
                  VCoutPrevu = 0.0 ; // prix a payer affiché avant payement
                  //VChoixNUnitees = 1000 ;  // a changer par valeur saisie
                  int CHOIXUTILISATEUR = Integer.parseInt(ChoixNUnute.getValue().toString());
                  VChoixNUnitees = CHOIXUTILISATEUR ;
                  //switch(VChoixNUnitees) {
                      //TODO interroger la BASE DE DONNEE !!
                  /*
                   * pour tests le switch ne fonctionne pas ????
                   * la syntaxe de range probablement à verifier plus tard
                   */
                      /*case 1000 - 5000 :
                          VTarifUnite = 0.12 ;
                          break;
                      case 5001 - 10000 :
                          VTarifUnite = 0.11 ;
                          break;
                      default :
                          VTarifUnite = 0.13 ;
                          break;*/
                          VTarifUnite = 0.13 ; //par defaut
                      if  (VChoixNUnitees <0 ) { VTarifUnite = 0.13 ;
                          String TTarifUnite = String.valueOf(TarifUnite);
                          //synchroniser l'affichage du Tarif ?
                          TarifUnite.setSelectedIndex(0);
                          VChoixNUnitees = VChoixNUnitees * -1 ; 
                          // prevoir l'erreur de saisie !!! de l'utilisateur "blaireau"
                      }
                      if  (VChoixNUnitees >0 ) { VTarifUnite = 0.13 ;
                          String TTarifUnite = String.valueOf(TarifUnite);
                          TarifUnite.setSelectedIndex(0);
                      }
                      if (VChoixNUnitees > 1000) { VTarifUnite = 0.12 ;
                          String TTarifUnite = String.valueOf(TarifUnite);                 
                          TarifUnite.setSelectedIndex(1);
                      }
                      if (VChoixNUnitees > 5000) { VTarifUnite = 0.11 ;
                          String TTarifUnite = String.valueOf(TarifUnite);
                          TarifUnite.setSelectedIndex(2);}
                      if (VChoixNUnitees > 10000) { VTarifUnite = 0.10 ;
                          String TTarifUnite = String.valueOf(TarifUnite);
                          TarifUnite.setSelectedIndex(3);}
                      if (VChoixNUnitees > 50000) { VTarifUnite = 0.9 ;
                          String TTarifUnite = String.valueOf(TarifUnite);
                          TarifUnite.setSelectedIndex(4);}
                      if (VChoixNUnitees > 100000) { VTarifUnite = 0.8 ;
                          String TTarifUnite = String.valueOf(TarifUnite);
                          TarifUnite.setSelectedIndex(5);}
                      if (VChoixNUnitees > 500000) { VTarifUnite = 0.7 ;
                          String TTarifUnite = String.valueOf(TarifUnite);
                          TarifUnite.setSelectedIndex(6);}
            }
            /*
             * calculer le cout financier de l'achat d'unitees media en
             * tennant compte des tarifs degressifs selon le volume
             */
            FrameCalcul.setVisible(true);
            String TVSoldeActuel = String.valueOf(VSoldeActuel);
            ChoixNUnute.setValue(VChoixNUnitees);
            double VFuturSolde = VSoldeActuel + VChoixNUnitees ; // calcul de base
            SoldeActuel.setText(TVSoldeActuel);
            String TVFuturSolde = String.valueOf(VFuturSolde);
            FuturSolde.setText(TVFuturSolde);
            VCoutPrevu = VTarifUnite * VChoixNUnitees ;
            String TVCoutPrevu = String.valueOf(VCoutPrevu);
            CoutPrevu.setText(TVCoutPrevu);
        }

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Dirige toi vers le concept de binding tels que les bindings JGoodies

    Une série de tutos sur ce framework:
    http://www.javalobby.org/java/forums/t17672
    http://www.javalobby.org/java/forums....html#91827771
    http://www.javalobby.org/java/forums....html#91827909
    http://www.javalobby.org/java/forums....html#91828178

    A noter que c'est quelque chose que tu pourrais également faire par toi même en créant un classe servant de modèle qui contiendra les données de chacun de tes composant.
    Modèle sur lequel tu pourrais placer des Listener maison qui feront que tous les composants seront mis au courant de la moindre modification.
    Il ne te restera plus qu'à gérer le changement des valeurs sur les composants, et logiquement chaque composant possède au moins un listener prévenant du changement de sa valeur (au pire un PropertyChangeListener fera l'affaire dans tous les cas).

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Merci mais là, à part rendre tout plus confu je vois pas ...

    Il n'y a pas moyen d'utiliser plustot mon environnement actuel NetBeans

    parceque là le jGoodies/Binding j'ai beau relire les tuto et deux fournis sur google, je ne comprend absoluement pas le fonctionnement.

    d'autan plus que je ne veux, ni ne le peux de toute façon, abandonner tout le travail déja fait sous netbean, donc les changements trop profond ne peuvent etre fait.

    une vraie explication sur le binding sera nécéssaire je le crain.... parce que m'avoir donné un lien c'est bien, mais malheureusement celui la ... je ne le comprend pas.

    PS: je relirais ça au calme ce soir .... ca ira surement mieux.... après un repas chaud...

  5. #5
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Bonjour,

    c'est en effet un peu plus clair maintenant.

    Mais si je comprend bien il faut que je construise un surveillant événement sur chacun des 4 champs pour mettre à jour les 3 autres.

    Si je procède ainsi les événements ne risquent t il pas de se déclencher en chaine ?
    ou est ce que seul l'événement "humain" est détecté ?

    En clair est ce que le changement de valeur dans un spinner par le programme est bien un événement de type différent qu'une saisie utilisateur ?

    Merci

  6. #6
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    c'est pas fini mais ça semble etre la solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Formulaire de saisie dynamique
    Par Gado2600 dans le forum Modélisation
    Réponses: 0
    Dernier message: 29/04/2014, 09h51
  2. Réponses: 1
    Dernier message: 03/07/2006, 17h47
  3. [ JSP ] Formulaire tres dynamique avec base de données.
    Par Dukedoom dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/06/2006, 09h19
  4. masque de saisi dynamique utilsant les expressions reguliere
    Par s1pike dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/04/2006, 15h25
  5. formulaire tabulaire dynamique
    Par whoesnext dans le forum IHM
    Réponses: 1
    Dernier message: 15/12/2005, 17h48

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