Afficher le champ d'un objet combobox dans un jtextfield en JDBC

Signaler
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012
-
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012
-
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;
}

et aussi utilisateur

public class Utilisateur {

private int id_utilisateur;
private String nom;
private String prenom;
private String grade;
private String specialite;
private String login;
private String passeword;
private String email;
private String cin;
}

Je travaille avec le JFrame automatique de netbeans.

( Les réponses proposées sur le forum touchant de près ou de loin ce sujet n'ont pas grand rapport avec mon projet car je les ai presque tous visité)

Merci bien de me venir en aide !!!!!!!!!

16 réponses

Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
9
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 ^^
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

Bonjour,

Pour le combobox, j'ai déjà résolu le problème, il me reste pour le le textfield.
Pour être plus clair je vous envoi le code de l'interface GUI :

import com.esprit.DAO.ReunionDao;
import com.esprit.Entity.Reunion;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

/**
*
* @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();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});

jButton1.setText("Ajouter");

jButton2.setText("Retour");

jButton3.setText("Sortir");

jComboBox1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jComboBox1MouseClicked(evt);
}
});
jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});

jTextField1.setText("Nom reunion");

jTextField3.setText("Date reunion");
jTextField3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField3ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGap(70, 70, 70)
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 57, Short.MAX_VALUE)
.addComponent(jButton2)
.addGap(41, 41, 41)
.addComponent(jButton3))
.addGroup(layout.createSequentialGroup()
.addGap(72, 72, 72)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextField1)
.addComponent(jTextField3, javax.swing.GroupLayout.DEFAULT_SIZE, 122, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 61, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jTextField5)
.addComponent(jComboBox1, 0, 106, Short.MAX_VALUE))))
.addGap(39, 39, 39))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(77, 77, 77)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(56, 56, 56)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 83, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton3)
.addComponent(jButton2))
.addGap(21, 21, 21))
);

pack();
}// </editor-fold>

private void jTextField3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void formWindowOpened(java.awt.event.WindowEvent evt) {
ReunionDao pays = new ReunionDao();
List<Reunion> listep = new ArrayList<Reunion>();

listep=pays.DisplayAllReunioName();

for(Reunion p : listep){
jComboBox1.addItem(p.getSujet());
//Object [] o=pays.addItem(p.getSujet());
/* String u=pays.ShowDate(jComboBox1.getSelectedItem().toString());
jTextField5.add(u, rootPane);*/
}

/*ReunionDao pay = new ReunionDao();
List<Reunion> liste = new ArrayList<Reunion>();
String u=pays.ShowDate(jComboBox1.getSelectedItem().toString());
jTextField5.add(this);*/

/* ReunionDao datedao=new ReunionDao();
String u=datedao.ShowDate(jComboBox1.getSelectedItem().toString());
jTextField5.add(u, this);
}*/
}

private void jComboBox1MouseClicked(java.awt.event.MouseEvent evt) {


}

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new AffecterReunionUtilisateur().setVisible(true);
}
});
}

// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField5;
// End of variables declaration

public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

}

Merci d'avance
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

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é... "

Comment le faire?
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
9
ARrrrrrg je meurs.... de l'autogénéré....

comme ça, le code que tu dois mettre est:

jcombobox1.addItemListener( new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
     Reunion r = (Reunion)e.getitem();
     jTextField1.setText(r.getSujet());
     jTextField3.setText(r.getDate + " " + r.getHeure());
}
    }
});


en théorie, cela devrait faire ce que tu souhaites...
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

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{

}

Merci d'avance
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
9
jcombobox1.addItemListener( new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Reunion r = (Reunion)e.getitem();
jTextField5.setText(r.getDate());
}
}
});

tu dois le mettre dans le code de ton interface graphique...
juste après
jComboBox1 = new javax.swing.JComboBox();

et pour les combobox, on utilise des ItemListener, pas des ActionListener...
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

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
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

je suis arriver a generer ce code automatiquement, a ma grande surprise celle ci est modifiable

public void addItemListener(ItemListener aListener) {
jComboBox1.addItemListener(aListener);

}

s'il vous plait, aider moi alors à integrer la methode voulu
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

j'ai adapter mon code comme suit (selon le choix imposé par le Jframe)mais cela me genere toujours des erreurs

public void addItemListener(ItemListener aListener) {
jComboBox1.addItemListener(aListener);
if (aListener.getStateChange() == ItemEvent.SELECTED) {
Reunion r = (Reunion)aListener.getItem();
jTextField5.setText(r.getDate());
}
}
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

J'ai aussi essayer un truc comme ceci, puisque les fonctions sont générer automatiquement

public void addItemListener(ItemListener aListener) {
jComboBox1.addItemListener(aListener);

}

public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Reunion r = (Reunion)e.getItem();
jTextField5.setText(r.getDate());
}
}

mais toujours rien.
Je continue toujours a bidouiller;
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
9
je continue à te laisser chercher ^^
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

merci
De toute les façons, je vous mettrai au courant.
Le problème, il y’a pas de manuel sur l'utilisation de netbeans mais je vais bidouiller

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.

Bon courage













T.U.E.R (First Person Shooter créé par Julien Gouesse)
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

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.











T.U.E.R (First Person Shooter créé par Julien Gouesse)
Messages postés
16
Date d'inscription
samedi 12 mai 2012
Statut
Membre
Dernière intervention
16 mai 2012

merci beaucup pour le conseil.
Je le mets tout de suite même en pratique,ca m'arrange plus.
J'ai pu trouvé la solution dont voici:

private void jComboBox1PopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
String tmp=jComboBox1.getSelectedItem();
String sql="select *from reunion where sujet=?";
int id_reunion = 0;

try {
ps = MyConnection.getInstance().prepareStatement(sql);
ps.setString(1, tmp);
ResultSet r = ps.executeQuery();
if(r.next()){
String add1=r.getString("date");
jTextField5.setText(add1);



}
} catch (Exception e) {

}
}

Grand merci et a bientôt