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. 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
  2. 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
  3. 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