Class cast exception

cs_ahmedoo Messages postés 17 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 29 juillet 2010 - 20 juil. 2007 à 11:00
cs_ahmedoo Messages postés 17 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 29 juillet 2010 - 21 juil. 2007 à 13:48
salut j'ai un probleme avec la methode setText() de JTextfield ,en fait quand j'essaye
de modifier le text par setText() elle génere une exceptionn class cast exception
et merci d'avance pur votre aide.
voici  une partie du pgm qui génère l'exception

if (o == rechercher) {
      String n = numConge.getText().toString();
      try {
        System.out.println(n);


        String q2 = "select mvc_idagent,mvc_adres,mvc_ntel,tc_libc,mvc_datdeb,mvc_datrep,np_nom,np_prenom from ar_mouvcong ,ar_typcong ,nperson  where (mvc_code='" +
                    n + "'and tc_code=mvc_type and np_idagent=MVC_idagent)";


        ResultSet resultat = state.executeQuery(q2);
        System.out.println("hgsdfhg");
        while (resultat.next()) {
          num = resultat.getString(1);
          System.out.println(num);
          adress = resultat.getString(2);
          System.out.println(adress);
          numtel = resultat.getLong(3);
          codetype = resultat.getString(4);
          datdeb = resultat.getString(5);
          datdeb = datdeb.substring(0, datdeb.indexOf("00:"));
          datr = resultat.getString(6);
          if (datr.indexOf("00:") != -1) {
            datr = datr.substring(0, datr.indexOf("00:"));
          }
          tnom = resultat.getString(7);
          tprenom = resultat.getString(8);
          System.out.println("nom:" + tnom + "       prenom:  " + tprenom);//ici le nom
          //s'affiche      correctement
//il n'ya pas des erreurs de requette les parametres sont recupérés correctement
        }
        if (num != null) {//condition de recherche
   //tt ces champs sont de JTextField
          numero.setText(num);
          adresse.setText(adress);
          tel.setText(String.valueOf(numtel));
          dat.setText(datdeb);
          datrep.setText(datr);
          //grade.setText(codeGrade);
          type.setSelectedItem(codetype);
          prenom.setText(tprenom);//génère une exception de type class cast exception
          nom.setText(tnom);//génère une exception de type class cast exception
      } else {
          JOptionPane.showMessageDialog(this, "numero n'existe pas",
                                        "ERREUR",
                                        JOptionPane.ERROR_MESSAGE);


        }
      } catch (SQLException e) {
        System.out.println("erreur de requette");


      }


    }

10 réponses

KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 décembre 2011
20 juil. 2007 à 11:13
Bonjour,

Vu le message d'erreur renvoyé, je te propose de faire un cast, ce qui veut dire:
x.setText((String) tavar) à priori ça marchera comme ça.

Kenza
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
20 juil. 2007 à 11:28
Tu as en effet un Long pour numtel il est donc possible que qu il te fasse un class cast execp
probleme de cast donc ;o)
ceci dit "caster" un Long en String n est pas non plus la bonne soluce ;o) il te faut faire setText(numTel.toString() )
et si c est une variable de type long et non Long il te faut faire setText( ""+ numTel ) ou setText(new Long( numTel).toString() )  voila ;o) verifie que toute tes setText sont bien des String ;o)

GL

GodConan ;o)
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
20 juil. 2007 à 11:28
Salut,

peux-tu donner la déclaration de tes variables stp

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

OoWORAoO
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
20 juil. 2007 à 11:29
battu de  9 sec ;o) hihi on approche le record ;o)

GodConan ;o)
0

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

Posez votre question
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
20 juil. 2007 à 11:32
En fait c est vrai que les déclaration aurai eté simpa qd meme ;o) bien que les methode du resultSet nous permetes de déduire les types ;o) nettement plus penible à chercher... ;o)

GodConan ;o)
0
cs_ahmedoo Messages postés 17 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 29 juillet 2010
21 juil. 2007 à 09:42
merci a vous d'accepter de m'aider . j'ai essayé tt mais ca n'a pas marché et je croit que ce n'est pas numtel qui génére l'exception mais plutot nom et prenom car
quand je mets nom et prenom en commentaire il n'y aura plus d'exception
et concernant les déclaration voici le code complet de la classe modifier et si ca vous interesse je peut vous envoyé le code complet du projet et merci une autre fois pour votre aide.
package projet_2_2;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.DriverManager;
import java.sql.*;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.Rectangle;


/**
 * Title:

 * Description:

 * Copyright: Copyright (c) 2007

 * Company:

 * @author not attributable
 * @version 1.0
 */


public class modifier extends JPanel implements ActionListener {
  int etat = 0;
  Connection connect;
  Statement state;
  JLabel jLabel2 = new JLabel();
  JTextField numConge = new JTextField();
  JButton rechercher = new JButton();
  JLabel jLabel3 = new JLabel();
  JTextField nom = new JTextField();
  JLabel jLabel4 = new JLabel();
  JTextField prenom = new JTextField();
  JLabel jLabel5 = new JLabel();
  JTextField grade = new JTextField();
  JTextField tel = new JTextField();
  JLabel jLabel6 = new JLabel();
  JLabel jLabel7 = new JLabel();
  JComboBox type = new JComboBox();
  JLabel jLabel8 = new JLabel();
  JTextField duree = new JTextField();
  JLabel jLabel9 = new JLabel();
  JTextField adresse = new JTextField();
  JButton modifier = new JButton();
  JButton supprimer = new JButton();
  JLabel jLabel10 = new JLabel();
  JTextField numero = new JTextField();
  JLabel jLabel1 = new JLabel();
  JTextField dat = new JTextField();
  calendrier ca = new calendrier();
  calendrier ca2 = new calendrier();
  javax.swing.JLabel jLabel11 = new JLabel();
  javax.swing.JTextField datrep = new JTextField();
  public modifier() {
    try {


      jbInit();
      addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
          ca.setVisible(false);
          ca2.setVisible(false);


        }
      });


    } catch (Exception e) {
      e.printStackTrace();
    }
    etat = 0;
  }


  public void Connecter(Connection c) {
    connect = c;
  }


  public static void main(String[] args) {
    modifier m = new modifier();
    JFrame f = new JFrame("gestion des congées");
    f.getContentPane().add(m);
    f.setVisible(true);
    f.setSize(485, 300);


  }


  private void jbInit() throws Exception {
    this.setLayout(null);
    jLabel2.setText("N°congé");
    jLabel2.setBounds(new Rectangle(1, 12, 60, 28));
    numConge.setText("");
    numConge.setBounds(new Rectangle(71, 15, 94, 28));
    rechercher.setBounds(new Rectangle(224, 12, 86, 29));
    rechercher.setToolTipText("rechercher un intitulé de congé");
    rechercher.setIcon(new ImageIcon("rech5.jpg"));
    rechercher.setText("");
    rechercher.addActionListener(this);
    jLabel3.setText("nom");
    jLabel3.setBounds(new Rectangle(176, 58, 55, 19));
    nom.setBackground(Color.white);
    nom.setEnabled(true);
    nom.setEditable(false);
    nom.setText("");
    nom.setBounds(new Rectangle(224, 56, 87, 27));
    jLabel4.setText("prenom");
    jLabel4.setBounds(new Rectangle(322, 61, 64, 18));
    prenom.setBackground(Color.white);
    prenom.setEnabled(true);
    prenom.setEditable(false);
    prenom.setText("");
    prenom.setBounds(new Rectangle(399, 58, 81, 26));
    jLabel5.setText("grade");
    jLabel5.setBounds(new Rectangle(0, 102, 60, 18));
    grade.setBackground(Color.white);
    grade.setEnabled(true);
    grade.setDoubleBuffered(false);
    grade.setEditable(false);
    grade.setText("");
    grade.setBounds(new Rectangle(71, 97, 94, 27));
    tel.setText("");
    tel.setBounds(new Rectangle(399, 101, 81, 26));
    jLabel6.setText("tel");
    jLabel6.setBounds(new Rectangle(323, 103, 39, 22));
    jLabel7.setText("type");
    jLabel7.setBounds(new Rectangle(176, 101, 50, 23));
    type.setDoubleBuffered(false);
    type.addItem("maladie");
    type.addItem("normal");
    type.addItem("exceptionnel");
    type.addItem("matérenité");
    type.addItem("post natal");
    type.setBounds(new Rectangle(225, 102, 86, 26));
    jLabel8.setText("durée");
    jLabel8.setBounds(new Rectangle(0, 143, 56, 31));
    duree.setText("");
    duree.setBounds(new Rectangle(71, 140, 94, 27));
    jLabel9.setEnabled(true);
    jLabel9.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel9.setForeground(Color.black);
    jLabel9.setText("adresse");
    jLabel9.setBounds(new Rectangle(176, 145, 57, 18));
    adresse.setText("");
    adresse.setBounds(new Rectangle(224, 139, 256, 30));
    modifier.setBounds(new Rectangle(113, 222, 125, 30));
    modifier.setText("modifier");
    modifier.setIcon(new ImageIcon("modifier.gif"));
    supprimer.setBounds(new Rectangle(237, 222, 129, 30));
    supprimer.setText("supprimer");
    supprimer.setIcon(new ImageIcon("supprimer.gif"));
    jLabel10.setText("numero");
    jLabel10.setBounds(new Rectangle(3, 61, 53, 15));
    numero.setBackground(Color.white);
    numero.setEnabled(true);
    numero.setEditable(false);
    numero.setText("");
    numero.setBounds(new Rectangle(71, 56, 94, 26));
    ca.setBounds(new Rectangle(60, 0, 351, 192));
    ca2.setBounds(new Rectangle(60, 0, 351, 192));
    jLabel1.setText("date debut");
    jLabel1.setBounds(new Rectangle(1, 184, 66, 24));
    /*gestion des evenements la calendrier 1(date debut de congé*/
    for (int j = 0; j < ca._daysNumber.length; j++) {
      ca._daysNumber[j].addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
          int m = ca.d.getMonth() + 1;
          System.out.println(ca.d.getDate() + "/" + m + "/" +
                             ca.d.getYear());
          dat.setText(ca.d.getDate() + "/" + m + "/" + ca.d.getYear());
          ca.setVisible(false);
        }
      });


    }
    /*gestion de la calendrier 2(date reprise)*/
    for (int j = 0; j < ca2._daysNumber.length; j++) {
      ca2._daysNumber[j].addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent e) {
          int m = ca2.d.getMonth() + 1;
          System.out.println(ca2.d.getDate() + "/" + m + "/" +
                             ca2.d.getYear());
          datrep.setText(ca2.d.getDate() + "/" + m + "/" + ca2.d.getYear());
          ca2.setVisible(false);
        }
      });
    }


    this.setBackground(SystemColor.text);
    dat.setBackground(Color.white);
    dat.setEditable(false);
    dat.setText("jj/mm/aaaa");
    dat.setBounds(new Rectangle(71, 181, 94, 27));
    datrep.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        ca.setVisible(false);
        ca2.setVisible(true);
      }
    });


    dat.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        ca2.setVisible(false);
        ca.setVisible(true);


      }
    });
    jLabel11.setText("date reprise");
    jLabel11.setBounds(new Rectangle(323, 187, 76, 15));
    datrep.setText("jj/mm/aaaa");
    datrep.setBounds(new Rectangle(399, 182, 81, 26));
    this.add(jLabel2, null);
    this.add(rechercher, null);
    this.add(jLabel5, null);
    this.add(nom, null);
    this.add(prenom, null);
    this.add(type, null);
    this.add(jLabel8, null);
    this.add(adresse, null);
    this.add(modifier, null);
    this.add(supprimer, null);
    this.add(jLabel1, null);
    this.add(numConge, null);
    this.add(grade, null);
    this.add(duree, null);
    this.add(tel, null);
    this.add(dat, null);
    this.add(jLabel9, null);
    this.add(jLabel7, null);
    this.add(jLabel3, null);
    this.add(jLabel10, null);
    this.add(numero, null);
    this.add(datrep);
    this.add(jLabel4, null);
    this.add(jLabel6, null);
    this.add(jLabel11);
  }


  public void reset() {
    dat.setText("jj/mm/aaaa");
    numero.setText("");
    adresse.setText("");
    tel.setText("");
    numConge.setText("");
    ca.setVisible(false);
  }




  public void actionPerformed(ActionEvent a) {
    Object o = a.getSource();
    String codetype = "";    String adress "", Type "", datdeb = "", datr = "", codeGrade = "";
    String num = null;    String tnom "", tprenom "";
    long numtel = 0;
    try {
      state = connect.createStatement();
    } catch (SQLException ex) {
    }


    if (o == rechercher) {
      String n = numConge.getText().toString();
      try {
        System.out.println(n);


        String q2 = "select mvc_idagent,mvc_adres,mvc_ntel,tc_libc,mvc_datdeb,mvc_datrep,np_nom,np_prenom from ar_mouvcong ,ar_typcong ,nperson  where (mvc_code='" +
                    n + "'and tc_code=mvc_type and np_idagent=MVC_idagent)";


        ResultSet resultat = state.executeQuery(q2);
        System.out.println("hgsdfhg");
        while (resultat.next()) {
          num = resultat.getString(1);
          System.out.println(num);
          adress = resultat.getString(2);
          System.out.println(adress);
          numtel = resultat.getLong(3);
          codetype = resultat.getString(4);
          datdeb = resultat.getString(5);
          datdeb = datdeb.substring(0, datdeb.indexOf("00:"));
          datr = resultat.getString(6);
          if (datr.indexOf("00:") != -1) {
            datr = datr.substring(0, datr.indexOf("00:"));
          }
          tnom = resultat.getString(7);
          tprenom = resultat.getString(8);
          System.out.println("nom:" + tnom + "       prenom:  " + tprenom);
        }
        if (num != null) {
          numero.setText(num);
          adresse.setText(adress);
          tel.setText(String.valueOf(numtel));
          dat.setText((String) datdeb);
          datrep.setText((String) datr);
          type.setSelectedItem(codetype);
          prenom.setText(tprenom.toString());
          nom.setText(tnom.toString());


        } else {
          JOptionPane.showMessageDialog(this, "numero n'existe pas",
                                        "ERREUR",
                                        JOptionPane.ERROR_MESSAGE);


        }
      } catch (SQLException e) {
        System.out.println("erreur de requette");


      }


    }
    if (o == modifier) {
      String DATE = dat.getText();
      int j = 0;
      int jj = 0;
      int mm = 0;
      int aa = 0;
      j = DATE.indexOf("/", 0);
      jj = Integer.parseInt(DATE.substring(0, j));


      mm = Integer.parseInt(DATE.substring(j + 1, DATE.indexOf("/", j + 1)));
      j = DATE.indexOf("/", j + 1);
      aa = Integer.parseInt(DATE.substring(j + 1));
      Date d = new Date(aa, mm, jj);
      System.out.println(jj + "/" + mm + "/" + aa + "///");
      System.out.println("date2=" + d.getDate() + "/" + d.getMonth() +
                         "/" +
                         d.getYear());
      numtel = Long.parseLong(tel.getText().toString());
      double dur = Double.parseDouble(duree.getText().toString());


      String[] month = {
                       "DEC", "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
                       "JUL", "AUG",
                       "SEP", "OCT", "NOV"};


      String requette = "update ar_mouvcong set mvc_ntel='" + tel.getText() +
                        "',mvc_adres='" + adresse.getText() +
                        "', mvc_type='" +
                        codetype + "' where mvc_code='" +
                        numConge.getText() +
                        "',mvc_datdeb='" + d.getDate() + "-" +
                        month[d.getMonth()] + "-" + d.getYear() + "'";


      try {
        state.executeUpdate(requette);
        System.out.println("modification terminé");
      } catch (SQLException ex1) {
      }
    }
    if (o == supprimer) {


    }


  }




}
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
21 juil. 2007 à 10:57
de toute facon comme on a pas la base ;o) ..... ;o) on peu pas le tester ;o)
pour affiner ton probleme met des tracers ds ton code (sysout) ou utilise le debugger ;o) et les point d arret

GodConan ;o)
0
cs_ahmedoo Messages postés 17 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 29 juillet 2010
21 juil. 2007 à 13:05
oui tu as raison tu peut pas tester l'interface sans la base, mais je pense que le pb c'est la gestion des caracteres arabes par JTextField car nom et prenom sont des caracteres arabes,en fait quand je mets des caracteres alphabétiques il n'y a pas d'exception.
Est ce que tu as une idée sur la gestion des caractères arabes sous java?et merci une autre fois. 
0
cs_GodConan Messages postés 2113 Date d'inscription samedi 8 novembre 2003 Statut Contributeur Dernière intervention 6 octobre 2012 12
21 juil. 2007 à 13:21
regarde si tu peux trouver ton bonheur avec la methode static format(...) de la class String normalement elle prend en compte les languages mais je n ai jamais etait confronter au probleme...
le soucis vien surtout du contenu de ta base ... si tu ne connais pas le codage des caractere arabe utilisé !!! tu auras du mal à les convertir .... ;o)

GodConan ;o)
0
cs_ahmedoo Messages postés 17 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 29 juillet 2010
21 juil. 2007 à 13:48
merci je vai essayé ca tt de suite.
0
Rejoignez-nous