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);
}
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.