Recherche java

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.
Configuration: Windows XP
Firefox 3.0.1

4 réponses

  1. 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
    1. merci pour la réponse mais vous pouvez mieux m'expliquer. merci bien
      0
      1. 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
    2. 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
      1. 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