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;
}
}
++