Projet hashtable !!

Résolu/Fermé
alaa16 Messages postés 11 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 13 avril 2010 - 20 sept. 2008 à 17:35
alaa16 Messages postés 11 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 13 avril 2010 - 21 sept. 2008 à 14:28
Bonjour,
je veux faire un programme java,qui permet de stocker les information d'un objet stagiaire a partire d'un interface graphique:

tout d'abord voila le code d'interface graphique :
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class p1 extends stgr implements ActionListener {
private JFrame jf;
public static JLabel l1;
private JLabel l2,l3;
private JButton b;
private JTextField tf1,tf2,tf3;

public p1(String titre){
jf=new JFrame(titre);
jf.setLayout(new GridLayout(4,2));
jf.setSize(400,345);

l1=new JLabel("Matricule");
l2=new JLabel("Nom");
l3=new JLabel("Prenom");
tf1=new JTextField();
tf2=new JTextField();
tf3=new JTextField();
b=new JButton("ajouter");
b.addActionListener(this);

jf.add(l1); jf.add(tf1);
jf.add(l2);jf.add(tf2);
jf.add(l3);jf.add(tf3);
jf.add(b);
jf.setVisible(true);
}
public void actionPerformed(ActionEvent e){
stgr st = new stgr(tf1.getText(),tf2.getText(),tf3.getText());
ajouter(st);
}
public static void main (String[] args) {
new p1("fenetre");
}
}

et voila le code d'un class stagiaire qui contient un methode d'ajout des information dans une hashtable :

import java.util.Hashtable;
import javax.swing.*;

public class stgr{
private int matricule;
private String nom;
private String prenom;
public static Hashtable h = new Hashtable();

public stgr(int mat , String n , String p){
matricule=m;
nom=n;
prenom=p;
}
public int getmatricule(){
return matricule;
}
public String getnom(){
return nom;
}
public String getprenom(){
return prenom;
}
public void setmatricule(int mat){
matricule=mat;
}
public void setnom(String no){
nom=no;
}
public void setprenom(String pr){
prenom=pr;
}
public String tostring1(){
return ("matricule " + matricule + "nom :" + nom + "prenom" + prenom );
}
public void ajouter(stgr s){
h.put(p1.l1.getText(),(stgr) s.tostring1());
}
}

Mais apres complilé le programme deux message d'erreures apparaissent :



cannot find symbol constructor stgr()
cannot find symbol constructor stgr(java.lang.String,java.lang.String,java.lang.String)

qoi faire donc !!
besoin d'aide.
mercie d'avance.
A voir également:

4 réponses

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
20 sept. 2008 à 21:54
Bonsoir,
Tes messages d'erreur sont assez explicites :
cannot find symbol constructor stgr() : Le compilateur ne trouve pas le constructeur sans argument. En effet, comme tu as défini ton propre constructeur, le compilateur ne rajoute pas le constructeur par défaut, il faut que tu l'explicites manuellement : rajoute simplement public stgr(){}
Ce constructeur par défaut n'est pas utilisé explicitement dans ton code, mais il semblerait que la machine virtuelle doit l'utiliser (sans doute que lorsque tu fais un cast comme dans ta méthode public void ajouter(stgr s), java doit créer une nouvelle instance de stgr, et utilise donc le constructeur sans argument).

cannot find symbol constructor stgr(java.lang.String,java.lang.String,java.lang.String) : Bah oui, tu crées un constructeur prenant un int et deux strings en argument, et tu essaies d'instancier un stgr avec 3 strings... Forcément ça casse.
Le remède :
- soit tu crées un Integer avant l'appel au constructeur (et tu modifies ton constructeur pour qu'il prenne un Integer au lieu d'un int). Gaffe au NumberFormatException...
- soit tu crées un Integer avant l'appel au constructeur, et tu lui passes tonInteger.intValue(); en premier paramètre. Gaffe au NumberFormatException aussi...
- soit tu modifies ton constructeur pour prendre 3 strings et pas de int.
- ...

Cordialement.
1
alaa16 Messages postés 11 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 13 avril 2010
20 sept. 2008 à 23:24
j'ai encoe des problemes avec ce programme voila les modification que j'ai fait mais encore d'erreures:

classe stagiaire ====>

import java.util.Hashtable;
import javax.swing.*;

public class stgr{
private int matricule;
private String nom;
private String prenom;
public static Hashtable h = new Hashtable();

public stgr{}

public stgr(String mat , String n , String p){
matricule=m;
nom=n;
prenom=p;
}
public int getmatricule(){
return matricule;
}
public String getnom(){
return nom;
}
public String getprenom(){
return prenom;
}
public void setmatricule(int mat){
matricule=mat;
}
public void setnom(String no){
nom=no;
}
public void setprenom(String pr){
prenom=pr;
}
public String tostring1(){
return ("matricule " + matricule + "nom :" + nom + "prenom" + prenom );
}
public void ajouter(int matricule,String nom,String prenom){
stgr st = new stgr(matricule,nom,prenom);
h.put(matricule,st);
}
}

classe d'interface ====>

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class p1 extends stgr implements ActionListener {
private JFrame jf;
public static JLabel l1;
private JLabel l2,l3;
private JButton b;
private JTextField tf1,tf2,tf3;
public p1(String titre){
jf=new JFrame(titre);
jf.setLayout(new GridLayout(4,2));
jf.setSize(400,345);

l1=new JLabel("Matricule");
l2=new JLabel("Nom");
l3=new JLabel("Prenom");
tf1=new JTextField();
tf2=new JTextField();
tf3=new JTextField();
b=new JButton("ajouter");
b.addActionListener(this);

jf.add(l1); jf.add(tf1);
jf.add(l2);jf.add(tf2);
jf.add(l3);jf.add(tf3);
jf.add(b);
jf.setVisible(true);
}
public void actionPerformed(ActionEvent e){
ajouter((int) tf1.getText(), (String) tf2.getText(), (String) tf3.getText()) ;
}
public static void main (String[] args) {
new p1("fenetre");
}
}

quelqu'un peut m'aider !!!
-1
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
20 sept. 2008 à 23:38
Re,
C'est pas public stgr{} mais public stgr(){} qu'il faut écrire.
Ensuite modifie ça :
public void actionPerformed(ActionEvent e){
ajouter((int) tf1.getText(), (String) tf2.getText(), (String) tf3.getText()) ;
}


par ça :
public void actionPerformed(ActionEvent e){
Integer tf1Value = new Integer(tf1.getText());
ajouter(tf1Value.intValue(), tf2.getText(), tf3.getText()) ;
}


Cordialement.
-1
alaa16 Messages postés 11 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 13 avril 2010
21 sept. 2008 à 14:28
Je vous remercie marco!
le probleme a été résolu.
mes salutations !
-1