Requete dans un Thread -> double résultat
Il y à un Edit en bas de page..
Bonjour,
J'ai une JComboBox avec des noms.
Lorsque se sélectionne un de ces noms, je dois remplir une Box avec le résultat de la requête.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
JComboBox cbox = new JComboBox();
cbox.setModel( ... );
cbox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ResultSet rs = null;
PreparedStatement ps = null;
ps = db.getConnection().prepareStatement(GET_INFOS_QUERY);
rs = ps.executeQuery();
while (rs.next()) {
myBox.put( new Infos(rs.getString("adresse"),rs.getInt("id")) );
}
}
});
// Dans la classe MyBox qui étend Box, instanciée en myBox :
public void put(Infos infos){
syso("Ajout de l'infos #" + infos.getId() );
add( new JLabel(infos.getAdresse()) );
repaint();
} |
Lorsque j'utilise ce code cela fonctionne sans problèmes..
Sauf que si j'ai beaucoup de résultats de requête, la JComboBox reste déroulée le temps que tous les myBox.put() se fassent.
J'ai donc essayer de mettre le tout dans un Thread mais alors chaque ligne est répétée.
Citation:
Ajout de l'infos #1
Ajout de l'infos #1
Ajout de l'infos #2
Ajout de l'infos #2
...
J'ai essayer de mettre ma requête dans un bloic synchronisé mais ça n'a rien changé, et de même pour la boucle while..
Code:
1 2 3 4 5 6 7 8 9
|
new Thread(new Runnable() {
public void run() {
Object objSync = new Object();
synchronized (objSync) {
// Code de requête et/ou boucle while sur ResultSet
}
}
}.start(); |
Quelqu'un à une idée ?
ps : il y à peut-être quelques erreures de frappes dans les codes, mais le mien fonctionne réellement
Edit :
Ben en réalite Mr le Thread n'y est pour rien c'est le Listener qui renvoie deux actions : http://www.developpez.net/forums/sho...d.php?t=161124
Mais mon test n'est pas correct...
désolé.