begin process at 2012 02 15 16:48:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Débutant(e)

 > 

ecouteur et nombre indefini de Button


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ecouteur et nombre indefini de Button

dimanche 15 avril 2007 à 18:38:42 | ecouteur et nombre indefini de Button

oceane751

bonjour à tous!!

j'ai un nombre indefini de bouton, issu d'une requete et le soucis est que l'ecouteur n'est actif que pour seulement le dernier bouton et non pas pour l'ensemble des boutons
voici mon bout de code :
[code]
......

ResultSet resultat = instruction.executeQuery("SELECT nom, prix FROM carte ORDER BY type");
      
   while(resultat.next())
   {
    
    String resul = resultat.getString("nom");
    String prix = resultat.getString("prix");
    labe = new JLabel(resul);
    text = new TextField(prix);
    bouton = new Button("modifier");
    
    
    panel.setLayout(new GridLayout(5,2));
    panel.add(labe);
    panel.add(text);
    panel.add(bouton);
    bouton.addActionListener(this);
         
   }

public void actionPerformed(ActionEvent e)
 {
  if ( (Button) e.getSource() == bouton )

  {
   int reponse = JOptionPane.showConfirmDialog(null,"Ticket", "confirmation", JOptionPane.YES_NO_OPTION);
   
   if (reponse == JOptionPane.YES_OPTION)
   {
.......
[/code]

pourtant l'ecouteur est bien dans la boucle while, je ne comprends pas trop porquoi ça en marche pas...

quelqu'un peut il m'aider?

merci!

lundi 16 avril 2007 à 09:16:02 | Re : ecouteur et nombre indefini de Button

indiana_jules

Salut
cela vient peut être du fait que tu utilises des variables globales. Essai plutot des variables locales à ta boucle.

Voilà

[#Tout le monde a des idées : la preuve, c'est qu'il y en a de mauvaises]
[#Je ne comprends pas tout, mais je parle de tout : c'est ce qui compte]
lundi 16 avril 2007 à 14:01:11 | Re : ecouteur et nombre indefini de Button

oceane751

comment ça?
je ne comprends pas..
lundi 16 avril 2007 à 21:31:27 | Re : ecouteur et nombre indefini de Button

cheplu

A chaque passage dans ta boucle, tu change la valeur de ta variable "bouton". Une même varaible ne peut pas avoir plusieurs valeurs! A la sortie de ta bouclen il ne reste dans "bouton" que la valeur pour le dernier passage, soit le dernier bouton.

Tu n'as gardé aucune référence sur tous les autres boutons de créés. Si tu doit avoir plusieurs boutons, tu devrait stocké chacun d'entre eux dans un tableau ou un ArrayList.
mardi 17 avril 2007 à 00:33:34 | Re : ecouteur et nombre indefini de Button

oceane751

et si je n'utilise qu'un seul bouton?

mardi 17 avril 2007 à 15:21:58 | Re : ecouteur et nombre indefini de Button

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut,

sinon tu peux utiliser une liste de tes boutons ou encore de faire de l'introspection sur ton panel...

exemple de code pour la liste:

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class Test extends JFrame implements ActionListener{

    private List<JButton> buttons = new ArrayList<JButton>();
   
    public Test(){       
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(0, 1, 5, 5));
        //simule ton while
        for(int i = 1; i < 11; ++i){
            JButton bt = new JButton("Bouton " + i);
            bt.addActionListener(this);
            panel.add(bt);
            //ajoute à la liste
            buttons.add(bt);
        }
        setContentPane(panel);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
   
    public static void main(String[] args) {
        new Test().setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        Object src = e.getSource();
        //teste si le bouton est dans la liste
        int index = -1;
        if((index = buttons.indexOf(src)) != -1){
            JButton bt = buttons.get(index);
            JOptionPane.showMessageDialog(this, "Je suis le bouton : " + bt.getText());
        }
    }
}




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
mardi 17 avril 2007 à 17:38:11 | Re : ecouteur et nombre indefini de Button

oceane751

ah aouis c'est pas mal comme code!!!
mais si je rajoute une TextField, ça va poser pb, non?
mardi 17 avril 2007 à 17:46:45 | Re : ecouteur et nombre indefini de Button

oceane751

'jai fait ça :

OptionPane.showMessageDialog(

null, "Je suis le bouton : " + bt.getText()+" " +((TextField)e.getSource()).getText());

mais ya beaucoup d'erreurs....
mardi 17 avril 2007 à 18:04:28 | Re : ecouteur et nombre indefini de Button

oceane751

j'ai refait :

public

void actionPerformed(ActionEvent e) {

Object src = e.getSource();

//teste si le bouton est dans la liste

int index = -1;

if((index = buttons.indexOf(src)) != -1){

JButton bt =

buttons.get(index);

if ((TextField)e.getSource() == text)

{

JOptionPane.showMessageDialog(

null, "Je suis le bouton : " + bt.getText() + " " + text.getText() );

}

}

}


puis les erreurs :

Exception in thread "AWT-EventQueue-0"

java.lang.ClassCastException: javax.swing.JButton

at test.actionPerformed(

test.java:56)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

 

qu'en penses tu?

merci..

mardi 17 avril 2007 à 18:58:57 | Re : ecouteur et nombre indefini de Button

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut,

toujours le meme problème pour les textes labels, etc .... de plus tu fais

 if ((TextField)e.getSource() == text)

hors dans la méthode actionPerformed e.getSource ne pourra jamais etre une instance d'un champ texte.

Note : Tu utilise un JLabel, un TextField, Button et c'est crade sérieux parce que tu mélange les composants AWT et SWING ce qu'il ne faut absolument pas faire sous peine d'obtenir des effets non désirés.

voici une solution que tu pourrais adopter :

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Hashtable;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Test extends JFrame implements ActionListener{

    private Hashtable<JButton, MyData> myDatas = new Hashtable<JButton, MyData>();
  
    public Test(){      
        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(0, 1, 5, 5));
        //simule ton while
        for(int i = 1; i < 11; ++i){
            MyData md = new MyData();
            md.label = new JLabel("Label " + i);
            md.text = new JTextField("Text " + i);
            JButton button = new JButton("JButton " + i);
            button.addActionListener(this);
            panel.add(button);//affiche seulement le bouton  mais tu peux afficher ce que tu veux
            //ajoute à la liste
            //note ici on place le bouton comme clé vu qu'il est
            //le seul à pouvoir déclancher la méthode actionPerformed
            myDatas.put(button, md);
        }
        setContentPane(panel);
        pack();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
  
    public static void main(String[] args) {
        new Test().setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {
        Object src = e.getSource();
        //teste si le bouton est dans la liste
        if(myDatas.containsKey(src)){
            JButton bt = (JButton)src;
            MyData md = myDatas.get(src);//récupere les champs selon le bouton
            JOptionPane.showMessageDialog(this, "Je suis le bouton : " +
                    bt.getText() + ", et moi le texte : " +
                    md.text.getText() + ", et moi le label : " + md.label.getText());
        }
    }
   
    //cette classe contient :
    // JLabel
    // JTextField
    class MyData {
        public JLabel         label     = null;
        public JTextField     text     = null;
    }
}


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA

1 2

Cette discussion est classée dans : bouton, button, resultat, prix, ecouteur


Répondre à ce message

Sujets en rapport avec ce message

B [ par Noir ] Salut J'ai un petit probleme avec les Button avec AWT : Je fait un petit jeu sous forme d'applet. Le personage principal est manipulé au clavier et Button empeche une autre classe de recuperer les messages claviers [ par Noir ] Salut J'ai un petit probleme avec les Button avec AWT : Je fait un petit jeu sous forme d'applet. Le personage principal est manipulé au clavier et URGENTISSIME... !!! [ par Bison_Ravi_33 ] salut tout le monde....J'ai un projet à rendre dans 2 semaines...Un projet basé sur les JavaBeansJ'ai deja réalisé mes algorithmes... tout fonctionne boutons [ par Bison_Ravi_33 ] salut tout le monde....J'ai un projet à rendre dans 2 semaines...Un projet basé sur les JavaBeansJ'ai deja réalisé mes algorithmes... tout fonctionne Débugguage d'un code source [ par TiPunK ] Bonjour à tous, Voilà, je commence à développer en java en cours, et nous avons à construire pendant les travaux pratiques un système de vent Pb couleur button [ par Zach1 ] Bonjour,je suis entrain de travailler sur une application pour une association sportive,mon problem est le suivant :je veux changer la couleur d'un bo programmer les button de telephone en java [ par rachaih ] bjr j'ai un mini projet sur le telephone avec programmation java et juska mnt je sais po comment programmer les deux bouton accepter l'appel et rejter Probleme pour afficher un fichier dans un JTextArea [ par dompty ] Bonjour, je suis en train de faire un petit logiciel de métrique et j'aurais aimé ajouter comme fonctionnalité de pouvoir ouvrir le fichier en questio Drag button dans un jtable [ par Grummfy ] Bonjour, sur un jtable j'implémente la possibilité de déplacer les lignes afin d'en changer l'ordre par drag&drop. Seulement je remarque que ce n'est [struts] modifier le bouton d'upload en image (le tag <html:file>) [ par morsij ] Bonjour, y a t'il une possibilité de remplacer le bouton d'upload de struts par une image. Merci de me répondre :)


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,399 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales