Recherche java

Fermé
Salma - 19 août 2008 à 20:34
 Salma - 20 août 2008 à 12:00
Bonjour,

je veut faire une recherche avec java. mais je veut que la recherche se fait au fur et à mesure avec la saisie du mot recherché.
C'est à dire, le tableau des données élimine des lignes à chaque fois je saisie un caractère.
Pouvez vous me aider svp.
Merci bien d'avance.
A voir également:

4 réponses

sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
19 août 2008 à 20:37
Salut,

En Swing ou Web? Si Swing, tu peux faire un listener sur l'événement key released et faire l'intérrogation en ce moment. Si Web, tu peux utiliser Ajax.

++
0
merci pour la réponse mais vous pouvez mieux m'expliquer. merci bien
0
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
20 août 2008 à 08:57
Ben, voyons, c'est à toi de mieux expliquer ce que tu veux faire:
je veut faire une recherche avec java. mais je veut que la recherche se fait au fur et à mesure avec la saisie du mot recherché. <== quel genre d'application as-tu? Une application Java desktop? Dans ce cas: utilises-tu Swing? AWT? SWT? Autre?

Si pas de desktop: est-ce qu'il s'agit d'un application Web?

++
0
j'ai un tableau de données. contenant nom prénom etc....
au dessous du tableau j'ai un jtextfield . par exemple je vais faire la recherche selon le nom. par exemple je cherche les clients sous le nom salma. quand je saisie s les lignes du tableau dont la première lettre du nom et différente de s vont disparettre. apres quand je saisie a le tableau elimine encors des lignes etc...
j'utilise le swing
0
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
20 août 2008 à 11:01
OK.

j'ai un tableau de données. contenant nom prénom etc. <== je suppose que le composant est une JTable. Dans ce cas, tu pourrais faire un truc comme ça (code non optimisé du tout: si le modèle est grand - des milliers de lignes - ça va ramer).
import java.awt.BorderLayout;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class SalmaSample extends JFrame {
	private JTable table;
	private JTextField textField;
	private static final long serialVersionUID = 1L;
	private final String[][] data = new String[][] { { "nicolas", "sarko" }, { "bonaparte", "napoléon" },
			{ "jules", "césar" }, { "salma", "salma" } };
	private final String[] cols = new String[] { "prénom", "nom" };
	DefaultTableModel model = new DefaultTableModel(data, cols);

	public static void main(String args[]) {
		try {
			SalmaSample frame = new SalmaSample();
			frame.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public SalmaSample() {
		super();
		setBounds(100, 100, 500, 375);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		textField = new JTextField();
		textField.addKeyListener(new KeyAdapter() {
			public void keyReleased(KeyEvent e) {
				// restore the ancient table model
				getTable().setModel(model);

				// seek the model (column name)
				String enteredText = textField.getText();
				Vector<Vector> data = ((DefaultTableModel) getTable().getModel()).getDataVector();
				// in our example (hardcoded),data is a Vector of Vector; inner Vector contains 2 elements
				// first one is our firstName we're looking for
				Vector<Vector<String>> filteredElements = new Vector<Vector<String>>();
				for (Vector<String> v : data) {
					if (v.get(0).startsWith(enteredText)) {
						filteredElements.add(v);
					}
				}

				// at this point, we have all the elements starting with our enteredText
				Vector<String> colV = new Vector<String>();
				colV.add("prénom");
				colV.add("nom");
				DefaultTableModel newModel = new DefaultTableModel(filteredElements, colV);
				getTable().setModel(newModel);
			}
		});

		getContentPane().add(textField, BorderLayout.NORTH);

		final JScrollPane scrollPane = new JScrollPane();
		getContentPane().add(scrollPane, BorderLayout.CENTER);

		scrollPane.setViewportView(getTable());
		//
	}

	protected JTable getTable() {
		if (table == null) {
			table = new JTable(model);
		}
		return table;
	}
}

++
0
merci bien
0