Recherche d'elements dans une jlist

Contenu du snippet

Permet de rechercher un element dans une JList a l'aide d'un JtextField.
A chaque ajout de caractere la JList est modifier pour afficher que les elements correspondants.

Source / Exemple :


import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import org.dyno.visual.swing.layouts.Constraints;
import org.dyno.visual.swing.layouts.GroupLayout;
import org.dyno.visual.swing.layouts.Leading;

@SuppressWarnings("all")
public class TextFilter extends JFrame {
	
	private JList jList0;	
	private JTextField jTextFieldRecherche;		
	private ArrayList lesElements = new ArrayList();
	
	public TextFilter() {
		setLayout(new GroupLayout());
		add(getJList0(), new Constraints(new Leading(24, 155, 10, 10), new Leading(32, 387, 10, 10)));
		add(getJTextFieldRecherche(), new Constraints(new Leading(297, 119, 10, 10), new Leading(163, 10, 10)));
		setSize(550, 450);
	}	
	private void initArrayList(){
		
		lesElements.add("Lucas");	
		lesElements.add("Lea");
		lesElements.add("Theo");	
		lesElements.add("Manon");
		lesElements.add("Hugo");
		lesElements.add("Emma");
		lesElements.add("Thomas");
		lesElements.add("Chloe");
		lesElements.add("Enzo");	
		lesElements.add("Camille");
		lesElements.add("Maxime");	
		lesElements.add("Oceane");
		lesElements.add("Alexandre");	
		lesElements.add("Ines");
		lesElements.add("Mathis");
		lesElements.add("Marie");
		lesElements.add("Nathan");
		lesElements.add("Clara");
		lesElements.add("Antoine");	
		lesElements.add("Sarah");
				
		
	}
	private JList getJList0() {
		if (jList0 == null) {
			jList0 = new JList();
			DefaultListModel listModel = new DefaultListModel();
			initArrayList();
			//Ajouts des Elements de l'arrayList dans la JList
			for (int i = 0; i< lesElements.size();i++) listModel.addElement(lesElements.get(i).toString());
			jList0.setModel(listModel);
		}
		return jList0;
	}
	private JTextField getJTextFieldRecherche() {
		if (jTextFieldRecherche == null) {
			jTextFieldRecherche = new JTextField();
			//Ajout d'un listener lors d'un relachement d'une touche de clavier
			jTextFieldRecherche.addKeyListener(new KeyAdapter() {
				public void keyReleased(KeyEvent e) {							
					DefaultListModel model = new DefaultListModel();//creation dun nouveau model pour une JList
					String enteredText = jTextFieldRecherche.getText();	//On recupere le texte entree dans le JtextField					
					for (int i = 0; i< lesElements.size();i++) {
						//Comparaison des elements contenu dans l ArrayList et du texte entree 
						if (lesElements.get(i).toString().indexOf(enteredText) != -1) {
							model.addElement(lesElements.get(i).toString());//ajout de lelement dans le nouveau model
						}
					}					
					getJList0().setModel(model);//On definie ce nouveau model pour la JList
				}
			});				
		}
		return jTextFieldRecherche;
	}
	public static void main(String[] args) {		
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				TextFilter frame = new TextFilter();
				frame.setDefaultCloseOperation(TextFilter.EXIT_ON_CLOSE);
				frame.setTitle("TextFilter");
				frame.getContentPane().setPreferredSize(frame.getSize());
				frame.pack();
				frame.setLocationRelativeTo(null);
				frame.setVisible(true);
			}
		});
	}

}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.