Simulation d'un distributeur de billet

Fermé
isma - Modifié par isma le 29/04/2014 à 18:35
 isma - 30 avril 2014 à 21:14
Bonjour,
C'est mon premier post ici, j'espère que je fait les choses en ordre. Bref, J'ai un petit souci avec mon programme, en effet j'essaye de faire une simulation d'un distributeur TPG (distributeur de billet de transport, tout marche bien jusqu'à maintenant.
mon problème est au niveau d'interface j'arrive pas à mettre les boutons et les jlabel en ordre comme je désire (c'est toujours pas en place).
J'ai essayer plusieurs truc mais toujours résultat non souhaité.
je pense qu'on peux faire avec JTable mais est ce que il y a une autre solution dans la même genre ce que je fait et qui me donne le résultat souhaité.
voilà mon interface :

<code java>public InterfaceMachineClient() {
              // Creation des objets graphiques
              //
              
              this.piecesChargees = new PiecesDesMonnaies();
              this.tarifChoisis=new Automate();
              
              double reste = piecesChargees.getResteApayer();  // il faut afficher reste dans le JLabel ilVousResteApayer  
              
              etatBoutonTarifNormal=false;
              etatBoutonDemiTarif=false;
              etatBoutonTarifDuneHeure=false;
              etatBoutonTarifDuneJournee=false;
              
              fenetre = new JFrame("TPG"); 
              panel = new JPanel(); 
              
              // Le constructeur de JFrame prend en argument le nom de la fenetre
              this.titre = new JLabel("<html><center><b>TRANSPORT PUBLIC GENEVOIS</b></center></html>");
              this.vousAvezInsere = new JLabel("Vous avez inséré " +piecesChargees.getTotal()+ " CHF. Monnaies à rendre: ");
              this.choisirTarif = new JLabel("<html><br><b>Merci De Choisir Le Tarif</b></br></html>");
              this.duree = new JLabel("Merci De Choisir La Durée");
              this.prix = new JLabel("Prix");
              this.impression = new JLabel("une fois vous avez payer appuyer sur imprimer");
              this.ilVousResteApayer = new JLabel("il vous reste " +reste+ " CHF à payer");            
              // Le constructeur de JButton prend en argument le nom du bouton
             /* this.boutonEffacer = new JButton("C");
              // Le constructeur de JButton prend en argument le nom du bouton
              this.boutonQuitter = new JButton("Quitter");*/
              this.tarifNormal = new JButton("TARIF NORMAL");
              this.prixCalculer = new JTextField(price+ " CHF");
              this.demiTarif = new JButton("1/2 TARIF");
              this.tarifDuneHeure = new JButton("1 Heure");
              this.tarifDuneJournee = new JButton("Journée Complète");

              this.imprimerBillet = new JButton("Imprimer");
              this.annuler = new JButton("Annuler");
              this.pieceDe5 = new JButton("5 CHF");
              this.pieceDe2 = new JButton("2 CHF");
              this.pieceDe1 = new JButton("1 CHF");
              this.pieceDe50Centime = new JButton("0.50 CHF");
              this.pieceDe20Centime = new JButton("0.20 CHF");
              this.pieceDe10Centime = new JButton("0.10 CHF");
              // Association des actions aux boutons
             
              tarifNormal.addActionListener(this);
              demiTarif.addActionListener(this);
              tarifDuneHeure.addActionListener(this);
              tarifDuneJournee.addActionListener(this);
              imprimerBillet.addActionListener(this);
              annuler.addActionListener(this);
              pieceDe5.addActionListener(this);
              pieceDe2.addActionListener(this);
              pieceDe1.addActionListener(this);
              pieceDe50Centime.addActionListener(this);
              pieceDe20Centime.addActionListener(this);
              pieceDe10Centime.addActionListener(this);
              /*ActionQuitter ActionQuitter = new ActionQuitter();                
              this.boutonQuitter.addActionListener(ActionQuitter);*/           
              // Disposition des objets graphiques au sein de la fenetre
              //
                
                panel.setLayout(new GridLayout(8, 2));
                this.fenetre.setTitle("TPG");
                this.fenetre.setSize(500, 500);
             
               //Au centre
               this.panel.add(titre, BorderLayout.CENTER);
               //Au nord
               this.panel.add(vousAvezInsere, BorderLayout.NORTH);
               //Au sud
               this.panel.add(choisirTarif, BorderLayout.SOUTH);
               //À l'ouest
               this.panel.add(tarifNormal, BorderLayout.WEST);
               //À l'est
               this.panel.add(demiTarif, BorderLayout.EAST);
               
               this.panel.add(duree, BorderLayout.CENTER);
               //Au nord
               this.panel.add(tarifDuneHeure, BorderLayout.NORTH);
               //Au sud
               this.panel.add(tarifDuneJournee, BorderLayout.SOUTH);
               //À l'ouest
               this.panel.add(prix, BorderLayout.WEST);
               //À l'est
               this.panel.add(prixCalculer, BorderLayout.EAST);
               
               this.panel.add(impression, BorderLayout.CENTER);
               //Au nord
               this.panel.add(ilVousResteApayer, BorderLayout.NORTH);
               //Au sud
               this.panel.add(annuler, BorderLayout.SOUTH);
               //À l'ouest
               this.panel.add(pieceDe5, BorderLayout.WEST);
               //À l'est
               this.panel.add(pieceDe2, BorderLayout.EAST);
               
               this.panel.add(pieceDe1, BorderLayout.CENTER);
               //Au nord
               this.panel.add(pieceDe50Centime, BorderLayout.NORTH);
               //Au sud
               this.panel.add(pieceDe20Centime, BorderLayout.SOUTH);
               //À l'ouest
               this.panel.add(pieceDe10Centime, BorderLayout.WEST);
               //À l'est
              
               
              /*  panel.add(titre);
                panel.add(vousAvezInsere,BorderLayout.CENTER);
                panel.add(choisirTarif);
                panel.add(choisirTarif);
                panel.add(tarifNormal);
                panel.add(demiTarif);
                panel.add( duree);
                panel.add( tarifDuneHeure);
                panel.add(tarifDuneJournee);
                panel.add(prix);
                panel.add(prixCalculer);
                panel.add(impression);
                panel.add(imprimerBillet);
                panel.add(ilVousResteApayer);
                panel.add(annuler);                
                panel.add( pieceDe5);
                panel.add(pieceDe2);
                panel.add(pieceDe1);
                panel.add( pieceDe50Centime);
                panel.add(pieceDe20Centime);
                panel.add( pieceDe10Centime,BorderLayout.CENTER);   */
                
                prixCalculer.setEnabled(false);
              // Affichage de la fenetre
              //               
            this.fenetre.setContentPane(panel);
            this.panel.setBackground( Color. green );               
            this.fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.fenetre.setVisible(true);
            }


merci beaucoup pour votre aide</code>

2 réponses

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
Modifié par KX le 29/04/2014 à 22:48
Bonjour,

Tu as utilisé un GridLayout, c'est plutôt une bonne idée, mais il faut que tu ajoutes tes éléments dans l'interface de gauche à droite et de haut en bas. L'ordre dans lequel tu vas ajouter ces éléments est donc important.

Remarque : les constantes BorderLayout (CENTER, EAST, etc.) ne peuvent pas fonctionner avec un GridLayout.
La confiance n'exclut pas le contrôle
1
merci pour la réponse, mais je pense que j'ai mal exprimer.
en fait, les bouton sont en ordre par contre si je veux par exemple mettre le titre sur une seule linge centré je peux pas le faire .
Si je fixe /*panel.setLayout(new GridLayout(8, 2)) */ (2 colonnes et 8 ligne) comment je pourrais mettre à la ligne 3 par exemple 2 bouton c tt, comment je pourrais mettre le titre centré et juste un jlabel a coté c pour ça j'ai penser à utiliser (center,east,west...) .
merci pour la remarque mais si je change en borderlayout il m'affiche que les dernier boutons et les autres ne sont pas affiché pourtant qu'il y'a add().
derniers question, comment je pourrais faire une ligne verticale en java ?

En fin je voudrais avoir une interface comme ça :

titre (Centrer) (une ligne verticale) texte

titre 1 titre 2 titre 3 (une ligne verticale) texte

titre 4 titre 5 titre 6 (une ligne verticale) texte

J'espère que j'étais très clair et merci beaucoup pour ton soutien.
0
IL Y A personne qui a une idée ?
merci
0