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>publicInterfaceMachineClient(){// Creation des objets graphiques//this.piecesChargees =newPiecesDesMonnaies();this.tarifChoisis=newAutomate();
double reste = piecesChargees.getResteApayer();// il faut afficher reste dans le JLabel ilVousResteApayer
etatBoutonTarifNormal=false;
etatBoutonDemiTarif=false;
etatBoutonTarifDuneHeure=false;
etatBoutonTarifDuneJournee=false;
fenetre =newJFrame("TPG");
panel =newJPanel();// Le constructeur de JFrame prend en argument le nom de la fenetrethis.titre =newJLabel("<html><center><b>TRANSPORT PUBLIC GENEVOIS</b></center></html>");this.vousAvezInsere =newJLabel("Vous avez inséré "+piecesChargees.getTotal()+" CHF. Monnaies à rendre: ");this.choisirTarif =newJLabel("<html><br><b>Merci De Choisir Le Tarif</b></br></html>");this.duree =newJLabel("Merci De Choisir La Durée");this.prix =newJLabel("Prix");this.impression =newJLabel("une fois vous avez payer appuyer sur imprimer");this.ilVousResteApayer =newJLabel("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 =newJButton("TARIF NORMAL");this.prixCalculer =newJTextField(price+" CHF");this.demiTarif =newJButton("1/2 TARIF");this.tarifDuneHeure =newJButton("1 Heure");this.tarifDuneJournee =newJButton("Journée Complète");this.imprimerBillet =newJButton("Imprimer");this.annuler =newJButton("Annuler");this.pieceDe5 =newJButton("5 CHF");this.pieceDe2 =newJButton("2 CHF");this.pieceDe1 =newJButton("1 CHF");this.pieceDe50Centime =newJButton("0.50 CHF");this.pieceDe20Centime =newJButton("0.20 CHF");this.pieceDe10Centime =newJButton("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(newGridLayout(8,2));this.fenetre.setTitle("TPG");this.fenetre.setSize(500,500);//Au centrethis.panel.add(titre, BorderLayout.CENTER);//Au nordthis.panel.add(vousAvezInsere, BorderLayout.NORTH);//Au sudthis.panel.add(choisirTarif, BorderLayout.SOUTH);//À l'ouestthis.panel.add(tarifNormal, BorderLayout.WEST);//À l'estthis.panel.add(demiTarif, BorderLayout.EAST);this.panel.add(duree, BorderLayout.CENTER);//Au nordthis.panel.add(tarifDuneHeure, BorderLayout.NORTH);//Au sudthis.panel.add(tarifDuneJournee, BorderLayout.SOUTH);//À l'ouestthis.panel.add(prix, BorderLayout.WEST);//À l'estthis.panel.add(prixCalculer, BorderLayout.EAST);this.panel.add(impression, BorderLayout.CENTER);//Au nordthis.panel.add(ilVousResteApayer, BorderLayout.NORTH);//Au sudthis.panel.add(annuler, BorderLayout.SOUTH);//À l'ouestthis.panel.add(pieceDe5, BorderLayout.WEST);//À l'estthis.panel.add(pieceDe2, BorderLayout.EAST);this.panel.add(pieceDe1, BorderLayout.CENTER);//Au nordthis.panel.add(pieceDe50Centime, BorderLayout.NORTH);//Au sudthis.panel.add(pieceDe20Centime, BorderLayout.SOUTH);//À l'ouestthis.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);}
KX
Messages postés16755Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention12 février 20253 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
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.
Modifié par isma le 30/04/2014 à 21:16
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.