associer une action lors de la creation de boutons - Java - Programmation
Marsh Posté le 26-06-2004 à 20:50:36
jj59 a écrit : Bonjours. |
Citation : Je voudrais créer un programme java qui permet de gérer des place (de spectacle par exemple) |
ben deja:
JButton bt = new JButton("Place 0"+i); << tu le crée c'est bien mieux
bt.setActionCommand("0"+i); // par exemple
bt.addActionListener(this) << ta classe implementera actionListener
panneau.add(bt);
apres tu mettras ce qu'il faut dans actionPerformed grace au getActionCommand() de ActionEvent
Marsh Posté le 27-06-2004 à 14:44:24
je suis désolé je n'est pas beaucoup touché aux interfaces graphiques cette année.
Donc j'ai fait ce que vous m'avez dit et voici se que sa donne :
Container panneau = fenetre7.getContentPane();
panneau.setLayout (new GridLayout ((nbPlaces/10),10,1,1));
for(int i=1;i<=nbPlaces;i++)
{
if(i<10)
{
JButton bt = new JButton("Place 0"+i);
bt.setActionCommand("0"+i);
bt.addActionListener(this);
panneau.add(bt);
}
else
{
JButton bt = new JButton("Place "+i);
bt.setActionCommand("0"+i);
bt.addActionListener(this);
panneau.add(bt);
}
}
fenetre7.pack();
fenetre7.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
fenetre7.show();
fenetre1.setVisible(false);
J'espere que c'est bien sa qu'il fallait faire mais je ne sait toujours pas comment faire apparaitre une fenetre lorsqu'on appuit sur un des boutons, désolé.
Merci pour votre aide
Marsh Posté le 27-06-2004 à 18:02:10
ben apres tu gere dans le actionperformed:
public void actionPerformed(ActionEvent e){
taframe.setVisible(true);
mais si y a des conditions par rapport au bouton ce serait bien de recupérer l'actionCommand mais apparament t'en a pas besoin...
}
Marsh Posté le 28-06-2004 à 11:21:17
Ouais sa marche que pour le dernier bouton créé.
En effet si je construit 5 boutons, si j'appuis sur le bouton :
- "Place 01" sa ne marche pas.
- le 2 , 3 et 4 non plus
mais par contre pour le bouton "Place 05", la fenetre s'affiche bien
Marsh Posté le 28-06-2004 à 11:45:51
Si je me trompe, je te conseille de faire une classe adaptée à ton probleme:
class MonJButton implements ActionListener
{
// une référence vers les données représentées par ce
// bouton
...
public void actionPerformed(ActionEvent e) {
...
}
}
Dans ton code précédent, t'as juste à changer JButton par MonJButton
et le this de addActionListener par bt et peut être d'autre truc ^^.
Marsh Posté le 28-06-2004 à 12:03:02
Désolé, j'ai pas tout compris.
Comme je l'ai dit je n'est pas fait beaucoup d'interface graphique cette année (je suis en 1er année de dut info)
et tout ce qui est ActionListener, actionPerformed .... , je ne maitrise pas du tout.
Pouvez vous m'eclairer davantage svp.
Merci pour votre aide
Marsh Posté le 28-06-2004 à 14:17:17
ActionListener c'est une interface, c'est à dire un ensemble de méthode virtuelle (i.e pas implémentées) (classe virtuelle pure en C++)
la classe qui est définie "implements UneInterface" signifie qu'elle définit les méthodes de l'interface UneInterface.
Dans l'interface ActionListener, il y a une méthode :
ActionPerformed(...)
Cette méthode est appelée par le gestionnaire d'événement de
la machine virtuelle lorsque tu cliques ou tu actionnes (touche entrée) le composant.
MAIS
pour que cette méthode soit appelée, il faut préciser au gestionnaire d'évenement que la méthode Actionperformed, en cas d'action de l'utilisateur a été définie et doit être appelée, pour le composant graphique en question.
Pour cela, il faut rajouter le code:
LeComposant.addActionListener(listenerRef),
où listenerRef est une référence(pointeur) vers l'interface qui contient la méthode devant être appelée en cas d'action de l'utilisateur.
Du coup, pour ce qui concerne tes boutons, tu tapes le code que je t'ai passé et tu rajoutes un AddActionListener à chaque objet dont tu veux récupérer un click ou ou la frappe de la touche ENTREE.
le principe est le même pour tous les Listeners. Si t'as compris ça, ba tu peux faire pas mal de truc avec la gestion des événements.
Voilà j'espère avoir été clair. ^^
Marsh Posté le 26-06-2004 à 15:58:36
Bonjours.
Je voudrais créer un programme java qui permet de gérer des place (de spectacle par exemple)
Ainsi chaque places sera représenté par un bouton
(par exemple si le nombre de places est de 50, il y aura 50 boutons dans une fenetre)
La partie du programme permettant ceci est la suivante:
Container panneau = fenetre7.getContentPane();
panneau.setLayout (new GridLayout ((nbPlaces/10),10,1,1));
for(int i=1;i<=nbPlaces;i++)
{
if(i<10)
{
panneau.add(new JButton("Place 0"+i));
}
else
{
panneau.add(new JButton("Place "+i));
}
}
fenetre7.pack();
fenetre7.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
fenetre7.show();
Mon problème est le suivant :
Je voudrai donc que lorsqu'on appui sur un des boutons une fenetre apparaisse permettant la saisie des caractéristiques du client (son nom, prénom ....)
Merci pour votre aide.