Simulation d'un distributeur de billet

isma -  
 isma -
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>
A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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
isma
 
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
isma
 
IL Y A personne qui a une idée ?
merci
0