Récupérer l'élément d'un Combobox

Récupérer l'élément d'un Combobox - Java - Programmation

Marsh Posté le 05-12-2002 à 20:39:05    

Je souhaite récupérér l'élément sélectionné dans un Combobox, afin de l'afficher dans un textfield. vous savez comment faire?
 
// pour faire la connection
import java.sql.*;
import java.lang.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
 
public class Changer0 extends JFrame implements ItemListener  
{
 
 JTextField reponse;  
 JComboBox perso;
 JPanel p;
   
 public void init()
 {
  // Déclaration de la fenetres et parametres    
  setSize(350, 450);
  setTitle("CARNET D'ADRESSE" );
   
  //Creation d'un conteneur  
  p = new JPanel();
  getContentPane().add(p);
  p.setLayout(null);  
  p.setBackground(Color.blue);
   
  reponse = new JTextField("" );
  reponse.setBounds(100, 220, 200, 25);
  p.add(reponse);
 
  JComboBox  perso = new JComboBox();
  perso.setBounds(100,120,100,25);
   p.add(perso);
     
    perso.addItem("toto1" );
    perso.addItem("toto2" );
    perso.addItem("toto3" );
     
  setVisible(true);
         perso.addItemListener(this);
        }
   
 public void itemStateChanged(ItemEvent e)
   {
    try
    {  
    String ac = perso.getSelectedItem().toString();
    System.out.println(ac);
       
  }
         catch(Exception x)
  {
   System.err.print(x.getMessage());
  }
 }

}

Reply

Marsh Posté le 05-12-2002 à 20:39:05   

Reply

Marsh Posté le 06-12-2002 à 09:09:24    

:bounce:

Reply

Marsh Posté le 06-12-2002 à 10:18:38    

ben ça devrait marcher, ça..non??

Reply

Marsh Posté le 06-12-2002 à 10:43:18    

nan ça ne marche pas
et dans la fenetre de sortie (MS DOS) il me marque nullnull à chaque sélection d'un élément

Reply

Marsh Posté le 06-12-2002 à 10:54:19    

ah ouais, je vois! :D Tu t'es fait prendre au piège de l'erreur con de base qu'on a tous fait!  
 
Regarde dans ton code :  

Code :
  1. public class Changer0 extends JFrame implements ItemListener 
  2. {
  3. ...........
  4. JComboBox perso; // Déclartaion de ton JComboBox : très bien...  
  5. .........
  6. public void init() {
  7.   .........
  8. JComboBox  perso = new JComboBox(); //Mais ça, par contre, c'est pas bien!!  
  9. perso.setBounds(100,120,100,25);
  10. p.add(perso);
  11. ......
  12. }

 
 
En gros, dans le corps de la méthode init, il ne faut pas redéclarer le JComboBox, sinon, tu ne fait pas référence à l'objet que tu as définit dans les paramètres de ta classe : tu crées un nouvel objet qui n'a de visibilité que dans le bloc où il a été déclaré (donc, dans la méthode init)
 
et ton JComboBox attribut de ta classe, ben il est resté null..
 
Remplace donc simplement ComboBox  perso = new JComboBox();  par
 
perso = new JComboBox();  
 
dans la méthode init, ça devrait beaucoup mieux marcher!

Reply

Marsh Posté le 06-12-2002 à 11:01:16    

effectivement ça marche beaucoup mieux !!
 
merci beaucoup

Reply

Marsh Posté le 07-01-2005 à 10:18:24    

Je profite de ce topic car mon problmème est assez semblable.
Je suis en train de découvrir le java, mais je connais le C++ et etc
 
Ici mon but est de simplement recuperer le tete d'un combobox, quand je clic sur un bouton, je voudrais simplement afficher le texte contenu dans celui-ci
 

Code :
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import recette.*;
  5. import depense.*;
  6. public class EsiFrame extends JFrame  {
  7.    
  8.      //Le constructeur
  9.      public EsiFrame()
  10.       {       
  11.      
  12.        //Parametre de ma fenetre
  13.        setTitle("Caisse - http://LeVeilleur.net" );
  14.        setBounds(50,50,800,600);
  15.        getContentPane().setLayout(new FlowLayout());
  16.      
  17.        //Bouton de fermeture
  18.        monBouton = new JButton("+" );
  19.        getContentPane().add(monBouton);
  20.      
  21.        EcouteBouton ecout1 = new EcouteBouton(1);
  22.        monBouton.addActionListener(ecout1);
  23.      
  24.    
  25.        //Bouton deux
  26.        monBouton2 = new JButton("-" );
  27.        getContentPane().add(monBouton2);
  28.        EcouteBouton ecout2 = new EcouteBouton(2);
  29.        monBouton2.addActionListener(ecout2);
  30.      
  31.        compte = new JLabel ("nombre de clic" ) ;
  32.        getContentPane().add(compte);
  33.        
  34.        //nb = new int();
  35.        nb=0; 
  36.      
  37.        texte = new JTextField(20);
  38.        getContentPane().add(texte);
  39.      
  40.        //Creation du box type
  41.        String [] type = {"recette","depense"};
  42.        combo1 = new JComboBox(type);
  43.        getContentPane().add(combo1);
  44.      
  45.        //Creation du box paiement
  46.        String [] typePaiement = {"liquide","bancontact"};
  47.        combo2 = new JComboBox(typePaiement);
  48.        getContentPane().add(combo2);
  49.      
  50.      
  51.       }
  52.    
  53.      
  54.    
  55.  
  56.      private JButton monBouton;
  57.      private JButton monBouton2;
  58.      public JLabel compte;
  59.      public int nb;
  60.      public JTextField texte;
  61.      public JComboBox combo1,combo2;
  62.      private int n;
  63.    
  64.      
  65.   class EcouteBouton implements ActionListener
  66.   {
  67.    public EcouteBouton(int n)
  68.    {this.n=n;}
  69.  
  70.  
  71.    public void actionPerformed (ActionEvent ev)
  72.      {
  73.       System.out.println("Action Bouton "+ n);
  74.      
  75.       //On connait le bouton sur lequel on a cliqué
  76.       if(n==1)
  77.         nb++;
  78.       else
  79.         nb--;
  80.        
  81.       //Affiche du nombre de clic sur les boutons   
  82.       compte.setText(" "+ nb);
  83.      
  84.        
  85.       //On recupere ce qu'il y a dans le combobox
  86.       Object valeur = combo2.getSelectedIndex();
  87.       System.out.println((String)valeur);
  88.    
  89.       }
  90.  
  91.    
  92. }
  93.    
  94. }


 
 
Ca compile, lorsque l'application se lance, qd je clic sur un des boutons pour récuperer ce qui se trouve dans le combobox, j'ai plein d'erreurs dans la fenetre dos
 
http://www.leveilleur.net/chris/java.png
 
C'est certainement une erreur de noob, mais je trouve pas :'(
 
merci :)


Message édité par Le Veilleur le 07-01-2005 à 10:20:45

---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 07-01-2005 à 10:24:53    

Je pense avoir trouver
 

Code :
  1. System.out.println(combo2.getSelectedItem().toString());


 
Ceci fonctionne, comme dans le code source de blueman
 
et dans mon bouquin, il parlait de faire

Code :
  1. / Object valeur = combo2.getSelectedItem();
  2.       System.out.println((String)valeur);


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 07-01-2005 à 11:10:04    

bizare le classcast : vu que c'est un tableau de chaine que tu mets dans ta combo.
 
Là d'après l'erreur, c'est un Integer que tu récupères => à un moment où à un autre, tu as du ajouter un Integer dedans ...
 
C'est à toi de savoir ce que tu mets dans ta combo pour savoir ce que tu dois récupérer dedans [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-01-2005 à 15:41:19    

D'apres mon livre, on recepere quelque chose de type Object, mais c'est rien, la méthode plus haut fonction.
 
merci d'y avoir regardé ;)


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 07-01-2005 à 15:41:19   

Reply

Marsh Posté le 07-01-2005 à 15:53:05    

Le Veilleur a écrit :

D'apres mon livre, on recepere quelque chose de type Object


Object c'est juste pour accepter n'importe quelle classe. En fait tu récupères ce que tu y as mis (lopgique)


Message édité par benou le 07-01-2005 à 15:56:24

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 07-01-2005 à 15:55:14    

Ah ok, merci :jap:


---------------
Mon Blog : LeVeilleur.net | Hébergement d'images : Hostipics.net
Reply

Marsh Posté le 07-01-2005 à 17:23:49    

benou a écrit :

bizare le classcast : vu que c'est un tableau de chaine que tu mets dans ta combo.
 
Là d'après l'erreur, c'est un Integer que tu récupères => à un moment où à un autre, tu as du ajouter un Integer dedans ...
 
C'est à toi de savoir ce que tu mets dans ta combo pour savoir ce que tu dois récupérer dedans [:spamafote]


Code :
  1. Object valeur = combo2.getSelectedIndex();


http://java.sun.com/j2se/1.3/docs/ [...] tedIndex()
 
les premiers ravages de l'autoboxing de java 5 ....

Reply

Marsh Posté le 07-01-2005 à 17:25:15    

c'est bien entendu getSelectedItem() qu'il faut (enfin, même ça c'est discutable ...) utiliser.

Reply

Marsh Posté le 07-01-2005 à 19:10:54    

nraynaud a écrit :

Code :
  1. Object valeur = combo2.getSelectedIndex();

les premiers ravages de l'autoboxing de java 5 ....


bien vu :jap:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed