chat11
Messages postés58Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention12 février 2011
-
28 mai 2008 à 22:22
chat11
Messages postés58Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention12 février 2011
-
31 mai 2008 à 22:17
j’ai mis un JcomboBox et JList dans ma fenêtre, et voici le code :
private void comboBox1ItemStateChanged(ItemEvent e) {<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
//j’établie la connexion avec ma BD et j’execute cette requête
rs=statement.executeQuery("select distinct Titredulivre from ANNONCES where Titredulivre LIKE '"+texttitre.getSelectedItem().toString() + "%' order by Titredulivre" );
……
}
public void updateList (Vector v)
{
listModel.clear ();
for (int i = 0; i < v.size(); i++)
{
listModel.addElement (v.get(i));
}
}
Je clique sur le Combobox et je sélectionne un item, ce dernier va être ajouté à la List mais le code ci-dessus ajoute l’item sélectionné 2 fois dans liste. Comment éviter cette répétition.
cs_Chatbour
Messages postés764Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention 6 septembre 201019 30 mai 2008 à 12:55
Bonjour,
je me penche maintenant sur ton code mais j'aimerai te proposer une méthode pour se connecter à une base de donnée Access plus "élégante" que la tienne : elle encapsule tout le traitement et fournit des méthodes pour exécuter du code SQL et rendre le résultat sous forme de ResultSet :
/*
ferme la connexion avec la base de donnée
*/
public void deconnecter() {
try {
statement.close();
connexion.close();
}
catch(SQLException e) {
e.printStackTrace();
}
}
}
cs_Chatbour
Messages postés764Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention 6 septembre 201019 28 mai 2008 à 23:51
Re,
ce code résout aussi le problème (je poste tout le code..) :
class Fenetre extends JFrame {
private JComboBox combo = new JComboBox();
DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);
public Fenetre() {
combo.addItem("ESS");
combo.addItem("CA");
combo.addItem("EST");
combo.addItem("CSS");
JPanel pan = new JPanel();
pan.add(combo);
pan.add(new JScrollPane(list));
chat11
Messages postés58Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention12 février 2011 29 mai 2008 à 16:52
merci Chatbour pour votre réponse grâce à ton programme j'ai éviter la répétition ,mais lorsque je tape par exemole "a" dans le combobox pour avoir tous les livres qui commence par " a" ,elle est ajouter dans la liste ,comment éviter ça?
et merci encore une fois
chat11
Messages postés58Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention12 février 2011 29 mai 2008 à 22:13
mon Jcombox contient une grande liste de livre pour y accéder facilement à un des livres je dois taper la premiere lettre aprés je valide par entrée pour voir ces livres mais malheureusement la letrre s'ajoute dans Jliste donc je veux éviter ça j'espere que tu ma compris maintenent merci encore chatbour.
chat11
Messages postés58Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention12 février 2011 30 mai 2008 à 00:22
voici mon code :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.jgoodies.forms.factories.*;
import com.jgoodies.forms.layout.*;
import java.sql.*;
import java.util.Vector;
public class lote extends JFrame {
public lote() {
initComponents();
}
private void initComponents() {
dialogPane = new JPanel();
contentPanel = new JPanel();
texttitre = new JComboBox(vect);
scrollPane1 = new JScrollPane();
listModel = new DefaultListModel();
list1 = new JList(listModel);
buttonBar = new JPanel();
okButton = new JButton();
cancelButton = new JButton();
CellConstraints cc = new CellConstraints();
private JComboBox texttitre;
private JScrollPane scrollPane1;
DefaultListModel listModel;
private JList list1;
private JPanel buttonBar;
private JButton okButton;
private JButton cancelButton;
//main
public static void main(String args[]){
lote fen = new lote();
fen.setVisible(true);
fen.pack();}
}
il est long car j'ai construis ma fenêtre à l'aide de JFormDeseign .j'ai bien établies la connexion avec la BD et aussi lorsque je tape une lettre dans le combobox j'obtiens les livres qui commence par cette lettre ,mais listModel.addElement(texttitre.getSelectedItem()); ajoute la lettre dans la liste.
merci.
chat11
Messages postés58Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention12 février 2011 30 mai 2008 à 19:22
merci chatbour pour la méthode Base ,t'as raison elle élégante que la mienne.
ombitious t'as répondu sur la clause LIKE ,tu as oublie de mettre "%".
je veux savoir s'il y a une méthode en ItemListener qui permet de calculer le nombre de cliques sur un item du combobox pour faire une condition sur ça "si le nombre de clique = =2 alors ajouter l'item séléctionné" dans la liste" peut être cette idée peut régler le probléme.
merci encore une fois et désolé de te fatiguer.
chat11
Messages postés58Date d'inscriptionlundi 10 septembre 2007StatutMembreDernière intervention12 février 2011 31 mai 2008 à 22:17
merci Chatbour pour tes conseils et ton aide ,j'ai résoulu mon probléme il suffit de faire une condition sur la taille de l'item pour éviter d'ajouter les lettres à la liste :
String a =(String)combo.getSelectedItem();
if (a.length()>3){
listModel.addElement(combo.getSelectedItem());
vect1.add((String)combo.getSelectedItem());
System.out.println("vect :"+vect1);
}