Probleme de JCombobox

cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010 - 23 sept. 2009 à 16:30
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010 - 25 sept. 2009 à 17:20
salut,
je travaille sur une application où je choisi l'année universitaire et je reçois le total des dépenses et le total des Recettes pour calculer le solde crediteur(recette - dépenses). ce derniers doit etre enregistrer comme une recette dans l'annee universitaire qui suive.
le probleme c'est que je doit passer d'une interface a une autre. lapremiere qui calcul le solde crediteur et la deuxieme permet d'enregistrer ce solde comme etant un recette dans l'annee qui suive.j'ai realisé une methode qui permet de recuperer l'année universitaire que j'ai selectionner dans la premiere inteface
 public String getAnnee(){
          annee=(String) jComboBox1.getSelectedItem();
           System.out.print(annee);
         return annee;
     }



mais le probleme le System.out.print(annee) affiche la premiere année qui figure dans le jComboboxe, non pas l'annee que je selectionne.
es ce que quelqu'un peut me dire d'où vient le probléme.

11 réponses

dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
23 sept. 2009 à 16:36
Salut,

Primo, je te conseille d'utiliser la méthode toString de la classe Object... plutôt que de caster en String.

Ensuite, testes que tu as bien tous tes objets à l'intérieur de ta comboBox
System.out.println(jComboBox1.getItemCount());


Au moins pour tester ça.


 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
23 sept. 2009 à 17:04
vous avez raison le System.out.println(jComboBox1.getItemCount()) me retourne que l'année universitaire 2008-2009 2 fois alors que moi j'en ai dans ma base 2008-2009 et 2009-2010. mais je ne sais pas d'où vient le probleme meme si c'est affiché les année 2008-2009 et 2009-2010 dans le jCombobox
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
23 sept. 2009 à 17:07
Salut,

Non, il te renvoit combien? C'est un chiffre que retourne getItemCount...

for (int cpt = 0; cpt < jComboBox1.getItemCount(); cpt++) {
    System.out.println(jComboBox1.getItemAt(cpt).toString());
}

Ca donne quoi ça?

 C'est après des heures de codage que j'ai compris pourquoi les créateurs de Java ont choisi une tasse de café comme logo...
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
23 sept. 2009 à 17:08
pardon j'ai fait une erreur il m'affiche 2
donc ya pas d'erreur j'en ai deux enregistrements dans le jComboBox et c'est ce que j'ai dans ma base mais tj je ne sais pas pourquoi il ne considere que le premier enregistrement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
23 sept. 2009 à 17:17
le resultat de
for (int cpt = 0; cpt < jComboBox1.getItemCount(); cpt++) {
    System.out.println(jComboBox1.getItemAt(cpt).toString());
}

est
2008-2009
2009-2010
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
23 sept. 2009 à 17:21
Et si tu remplaces ton
annee=(String) jComboBox1.getSelectedItem();

par un
annee = jComboBox1.getItemAt(jComboBox1.getSelectedIndex()).toString;
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
24 sept. 2009 à 01:27
j'ai remplacé mais malheureusement toujour le meme probleme.
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
24 sept. 2009 à 09:23
C'est bizarre... quand est ce que tu testes ta combobox?
Dans quel évènement?
Tu dois avoir un soucis là dessus...
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
25 sept. 2009 à 00:48
bonsoir,
je m'éxcuse pour le retard.

j'ai procedé à une autre methode. j'ai fais les tests et j'ai constater que lorsque j'utilise la methode getAnnee() il me retourne la premiere annee du jComboBox1. j'ai fais mon test au niveau d'une methode initJtext() que j'utilise pour calculer le solde crediteur. l'année est bien l'année choisit. alors j'ai pensé de changer le type de retoure de ma méthode initJtext() et de le rendre String pour retourner l'année et l'utiliser dans la deuxieme interface. voici le code
private String initJtext() {
         Float var = 0F;
         Float var1 = 0F;
         Float var2 = 0F;

         annee=(String) jComboBox1.getSelectedItem();
         System.out.print(annee);
         TotalDepense td = new  TotalDepense(annee);
         TotalRecette tr = new TotalRecette(annee);
        
         Float totalDepense=td.getTotal();
         Float totalRecette=tr.getTotal();

        jTextField1.setText(Float.toString(totalRecette));
        jTextField2.setText(Float.toString(totalDepense));
        
         if (! (jTextField1.getText().equals("")))
            var1=Float.valueOf(jTextField1.getText());

            
        
         if (! (jTextField2.getText().equals("")))
            var2=Float.valueOf(jTextField2.getText());

            

        var = var1-var2;
        jTextField3.setText(Float.toString(var));

        SoldeCrediteur.ajouterSoldeCrediteur(annee, var);
return annee;
    }

ce teste affiche bien l'année selectionné mais dans la methode qui se trouve dans la deuxieme interface le test donne la premiere année du jComboBox1.
voici le code pour la deuxieme interface.
 private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {                                            
       
        jTextField1.setText("");
    jTextField2.setText("");
    jTextField3.setText("");
    jTextField4.setText("");
    jTextField5.setText("");
    jTextField6.setText("");
    jTextField7.setText("");
    jTextField8.setText("");
    jTextField9.setText("");
    jTextField10.setText("");
    jTextField11.setText("");
    jTextField12.setText("");
    jTextField13.setText("");
    jTextField14.setText("");
   
    
         jTextField2.setText("Solde Créditeur");
        annee= b.initJtext();
       System.out.print(annee);
        s = new SoldeCrediteur(annee);
        solde =  s.getSolde();
        //System.out.print(solde);

        jTextField3.setText(Float.toString(solde));
        
}                                           

je ne sais pas où le probléme si vous avez une idée!!!!!
0
dvoraky Messages postés 744 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 9 mai 2010 8
25 sept. 2009 à 09:12
Ben la deuxième interface s'initialise avant que tu choisisses l'année que tu souhaites...

Il faut un listener quelque part, genre à la fermeture d'une de tes fenêtre ou à la sélection de ta combobox, il y a un listener pour cela
0
cs_nassr Messages postés 58 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 24 mai 2010
25 sept. 2009 à 17:20
j'ai pas pas compris ce que vous voulez dire par l'initialisation de la deuxieme interface. pour le listener je veux savoir quelle genre de listener voici le code de la deuxieme interface pour que tu puisse comprendre mon travail

package Interface;

import com.toedter.calendar.JCalendar;
import economie.*;
import java.awt.Dialog.ModalityType;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import javax.swing.JDialog;
import javax.swing.JOptionPane;

/**
 *
 * @author CHADIA
 */
public class EnregistrerRecette extends javax.swing.JPanel {

        ListeAnneeScolaire la;
        String annee;
          BalanceAnnuelle b =  new BalanceAnnuelle();
        SoldeCrediteur s ;
        Float solde = 0F;
    /** Creates new form EnregistrerRecette */
    public EnregistrerRecette() {
        initComponents();
                try{
        this.initJComboBox1();

   }
   catch(ArrayIndexOutOfBoundsException e){

   }
   validate();

    }

    private void initJComboBox1() {
        //les année scolaires

        la = new ListeAnneeScolaire();
        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(la.ConvertVectorAnnee_To_Table()));

    }
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        Float var = 0F;
        Float   var1 = 0F;
      
        Float   var3 = 0F;
        Float   var4 = 0F;
        Float   var5 = 0F;
        Float   var6 = 0F;
        Float   var7 = 0F;
        Float   var8 = 0F;
        Float   var9 = 0F;
        Float   var10 = 0F;
        Float   var11= 0F;
        Float   var12 = 0F;
        

        if (! (jTextField4.getText().equals("")))
            var3=Float.valueOf(jTextField4.getText());


        if (! (jTextField5.getText().equals("")))
            var4=Float.valueOf(jTextField5.getText());


        if (! (jTextField6.getText().equals("")))
            var5=Float.valueOf(jTextField6.getText());


        if (! (jTextField7.getText().equals("")))
            var6=Float.valueOf(jTextField7.getText());


        if (! (jTextField8.getText().equals("")))
            var7=Float.valueOf(jTextField8.getText());



        if (! (jTextField9.getText().equals("")))
            var1=Float.valueOf(jTextField9.getText());



        if (! (jTextField10.getText().equals("")))
            var8=Float.valueOf(jTextField10.getText());



        if (! (jTextField11.getText().equals("")))
            var9=Float.valueOf(jTextField11.getText());



        if (! (jTextField12.getText().equals("")))
            var10=Float.valueOf(jTextField12.getText());



        if (! (jTextField13.getText().equals("")))
            var11=Float.valueOf(jTextField13.getText());

        if (! (jTextField14.getText().equals("")))
            var12=Float.valueOf(jTextField14.getText());


        var = var1 + var3 + var4 + var5 + var6 + var7 + var8 + var9 + var10 + var11 + var12;


annee= b.initJtext();
        System.out.print(annee);
        s = new SoldeCrediteur(annee);
        solde =  s.getSolde();

        if ( solde.equals(var)) {
            Recette.ajouterRecette( (String) jComboBox1.getSelectedItem(),jTextField1.getText(), jTextField2.getText(),solde,var3,var4,var5,var6,var7,var1,var8,var9,var10,var11,var12);
            
            validate();
           

        }

        else{
            JOptionPane.showMessageDialog(null, "ERREUR, vérifier votre saisie!!", "Avertissement", JOptionPane.ERROR_MESSAGE);

        }

    }                                        

    private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {                                            
        

        jTextField1.setText("");
    jTextField2.setText("");
    jTextField3.setText("");
    jTextField4.setText("");
    jTextField5.setText("");
    jTextField6.setText("");
    jTextField7.setText("");
    jTextField8.setText("");
    jTextField9.setText("");
    jTextField10.setText("");
    jTextField11.setText("");
    jTextField12.setText("");
    jTextField13.setText("");
    jTextField14.setText("");
            jTextField2.setText("Solde Créditeur");
        annee= b.initJtext();
       System.out.print(annee);
        s = new SoldeCrediteur(annee);
        solde =  s.getSolde();
       jTextField3.setText(Float.toString(solde));
        
}                                           


                    

}
0
Rejoignez-nous