Afficher le champ d'un objet combobox dans un jtextfield en JDBC
vizaluc
Messages postés16Date d'inscriptionsamedi 12 mai 2012StatutMembreDernière intervention16 mai 2012
-
15 mai 2012 à 18:50
vizaluc
Messages postés16Date d'inscriptionsamedi 12 mai 2012StatutMembreDernière intervention16 mai 2012
-
16 mai 2012 à 20:43
Bonjour à tous.
Suis en train de faire un projet de gestion de reunion dans laquelle je suis confronté à un problème.
Je veux afficher dans un jTexfield le contenu d'un champ de l'objet combobox s'il est choisi.
Pour se faire, j'ai creer la méthode showDate() dans mon ReunionDao (qui interagi avec la table reunion) qui est comme suis:
public class ReunionDao {
public String ShowDate(String nom) {
Reunion e=new Reunion();
String requete = "select date from reunion where sujet="+nom;
try{
PreparedStatement ps = MyConnection.getInstance().prepareStatement(requete);
ResultSet rs = ps.executeQuery(requete);
while (rs.next()){
System.out.println(""+rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3)+" "+rs.getInt(4)+""+rs.getString(5)+""+rs.getString(6));
}
return e.getDate();
}
catch(SQLException ex){
System.out.println("erreur lors de l'envoi de la date "+ex.getMessage());
}return null;
}
}
avant tout, je vous envois ma class Reeunio qui est comme suit:
public class Reunion {
private int id_reunion;
private String conferencier;
private String sujet;
private Salle id_salle; // Objet id_salle de type Salle
private String date;
private String heure;
//j'ai mis les setters et getters nécessaire.
}
Mon interface que j'ai nommé AffecterReunion se présente comme suis (je travaille sous netbeans)
un objet jCombobox qui affiche le nom de toutes le reunion
et
un objet jTextfield qui affichera automatiquement pour une reunion choisi la date correspondante puisque la date a été enregistrer dans la table reunion.
J'ai aussi creer une table et une classe Affecter comme suit
public class Affectation {
private int id_affectation;
private Reunion reunion;
private Utilisateur utilisateur;
private String nom_reunion_affecter;
private String nom_utilisateur_affecter;
private String date_reunion_affecter;
private String heure_reunion_affecter;
//Avec les setters et getters
}
sans oublier la classe salle
public class Salle {
private int id_primaire_salle;
private String nom;
private String emplacement;
}
cormandyr
Messages postés600Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention 8 juillet 201611 16 mai 2012 à 09:19
Salut,
Donc si je comprends bien, tu as une combo qui affiche les réunions.
Quand tu sélectionnes une de ces réunions via la combo, tu veux que la date de la réunion soit mise dans un textfield...
Comme ça en gros, tu doit avoir une combo que tu remplis tes instances de ta classe reunion.
cette classe doit avoir la méthode toString() qui sera automatiquement appelée par la combobox pour savoir ce qu'il doit afficher comme texte dans la combobox...
Sur cette combobox, tu dois avoir un itemListener qui sur base de l'OBJECT sélectionné, (qui est en fait une instance de Reunion) fait un setText() sur ton textfield avec la date de ta l'object sélectionné...
Voila, ce sont les grandes lignes du code requis pour faire ce que tu demandes (enfin ce que j'ai compris :p)... Je ne connais pas les frames automatiques de netbeans, mais si tu as le code de ton GUI, cela pourrait aussi aider ^^
/**
*
* @author asus
*/
public class AffecterReunionUtilisateur extends javax.swing.JFrame {
/** Creates new form AffecterReunionUtilisateur */
public AffecterReunionUtilisateur() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jComboBox1 = new javax.swing.JComboBox();
jTextField1 = new javax.swing.JTextField();
jTextField3 = new javax.swing.JTextField();
jTextField5 = new javax.swing.JTextField();
/*ReunionDao pay = new ReunionDao();
List<Reunion> liste = new ArrayList<Reunion>();
String u=pays.ShowDate(jComboBox1.getSelectedItem().toString());
jTextField5.add(this);*/
vizaluc
Messages postés16Date d'inscriptionsamedi 12 mai 2012StatutMembreDernière intervention16 mai 2012 16 mai 2012 à 10:59
Vous avez dit
"Sur cette combobox, tu dois avoir un itemListener qui sur base de l'OBJECT sélectionné, (qui est en fait une instance de Reunion) fait un setText() sur ton textfield avec la date de ta l'object sélectionné... "
vizaluc
Messages postés16Date d'inscriptionsamedi 12 mai 2012StatutMembreDernière intervention16 mai 2012 16 mai 2012 à 11:52
Excusez moi mais, cela n marche toujours pas
Le jTextfield dans lequel j'aimerais afficher la date, la date seulement se nomme jTextfield5.
Dans mon jTextfield3 j'ai écrit Date de réunion et dans
dans jTextfield1 j'ai écrit Nom réunion
Pour le bout de code que vous venez de m'envoyer, je ne sais pas ou le mettre puisque sous netbeans, il déclare tout les boutons private et impossible à modifier.
Dois je ajouter implements ActionListener au niveau de la classe mere? qui seule est déclaré automatiquement public comme suit?
public class AffecterReunionUtilisateur extends javax.swing.JFrame implements ActionListener{
vizaluc
Messages postés16Date d'inscriptionsamedi 12 mai 2012StatutMembreDernière intervention16 mai 2012 16 mai 2012 à 15:11
Je travaille sous swing, j'avais oublier de vous le precisez, excusez moi.
Sous netbeans quand on utilise les frames automatique, au niveau de la creation de l'objet, on ne peut rien modifier
Vous ne devriez pas utiliser un éditeur WYSIWYG tant que vous ne maîtrisez pas Swing. On utilise un IDE et ce type d'éditeur pour gagner du temps quand on est déjà à l'aise avec les "outils" sur lesquels ils reposent; quand on fait l'inverse, on bloque dès que l'outil de haut niveau ne réagit pas de manière attendue. Je me tue à répéter ça ici depuis des années. L'important, c'est de savoir coder en Java, pas d'utiliser Netbeans.
Si votre ItemListener avec votre méthode itemStateChanged telle que vous l'avez redéfinie n'est pas ajouté à la JComboBox, votre code ne sera jamais appelé. Je n'utilise pas Netbeans donc je ne peux pas vous dire comment autogénérer ça. Normalement, vous devriez quand même avoir un point d'entrée dans le code généré pour placer le traitement que vous avez mis dans itemStateChanged mais il se peut que l'ItemListener ne soit pas généré par défaut.
vizaluc
Messages postés16Date d'inscriptionsamedi 12 mai 2012StatutMembreDernière intervention16 mai 2012 16 mai 2012 à 17:07
C'est un IDE qui a été imposé à l'école.
C'est pas de ma faute, j'aurai voulu bien codé avec les outils.
ItemListener a été généré par défaut comme ceci après une astuce que j'ai découvert aujourd’hui
public void addItemListener(ItemListener aListener) {
jComboBox1.addItemListener(aListener);
}
je peut placer du texte n'importe ou dans cette méthode.
Mon seule problème, comment le mettre puisque cela est différent de la solution ci dessous qui pourrait résoudre mon problème
jcombobox1.addItemListener( new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Reunion r = (Reunion)e.getitem();
jTextField5.setText(r.getDate());
}
}
});
Remarquer la position de cette ligne dans les 2 méthodes, j'ai tout essayer sans vous mentir
jComboBox1.addItemListener(aListener);
jcombobox1.addItemListener( new ItemListener() {
Vous pouvez tout à fait coder dans Netbeans sans utiliser Matisse, son éditeur WYSIWYG. Vous pouvez créer un projet Java sans passer par ça, cela vous éviterait de passer un temps fou à chercher le point d'entrée dans le code.
Il n'y a pas d'astuce, l'exemple que vous donnez ne crée pas l'ItemListener, vous ne montrez que le bout de code qui permet d'associer cet ItemListener à la JComboBox qui vous intéresse. Vous avez besoin de créer cet ItemListener et de l'associer à la bonne JComboBox. Ce bout de code est correct :
jcombobox1.addItemListener( new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Reunion r = (Reunion)e.getitem();
jTextField5.setText(r.getDate());
}
}
});
Pour information, quand j'étais à l'IUT, nous n'avions pas le droit d'utiliser Netbeans. Ceux qui voulaient s'en servir l'utiliseraient d'une manière qui ne laissait pas de trace et rendaient juste le code source avec le script Ant en le modifiant un peu. Quel que soit l'outil qu'on vous demande d'utiliser en cours, vous pouvez toujours ruser. Vous pouvez coder sans Netbeans puis au dernier moment importer votre projet dans cet IDE pour rendre à votre professeur un projet Netbeans. De plus, ce n'est pas l'IDE le plus utilisé en entreprise, je ne vois pas trop l'intérêt de s'acharner dessus si c'est contre-productif sur le plan pédagogique.