Autocompletion text

Contenu du snippet

Ce Code montre l'utilisation de l'autocompletion dans un JTextField
après avoir choisie le mot il suffit de pressé la touche entrer du clavier pour la recupéré
sur la console de votre ide

Source / Exemple :


import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.JTextComponent;
import javax.swing.text.PlainDocument;
 
public class testAutocomplete extends PlainDocument {
 	
	
	
	private static final long serialVersionUID = 1L;

	private final List<String> dictionary = new ArrayList<String>();
 
	private final JTextComponent _textField;
 
	
	public testAutocomplete(JTextComponent field, String[] aDictionary) {
		_textField = field;
		dictionary.addAll(Arrays.asList(aDictionary));
	}
 
	
	public void addDictionaryEntry(String item) {
		dictionary.add(item);
	}
 
	
	@Override
	public void insertString(int offs, String str, AttributeSet a)throws BadLocationException {
		super.insertString(offs, str, a);
		String word = autoComplete(getText(0, getLength()));
		if (word != null) {
			super.insertString(offs + str.length(), word, a);
			_textField.setCaretPosition(offs + str.length());
			_textField.moveCaretPosition(getLength());
			// _textField.setCaretPosition(getLength());
			// _textField.moveCaretPosition(offs + str.length());
		}
	}
 
	
	
	public String autoComplete(String text) {
		for (Iterator<String> i = dictionary.iterator(); i.hasNext();) {
			String word = i.next();
			if (word.startsWith(text)) {
				return word.substring(text.length());
			}
		}
		return null;
	}
 
/**

  • @param dictionary
  • @return
  • /
public static JTextField createAutoCompleteTextField(String[] dictionary) { JTextField field = new JTextField(20); testAutocomplete doc = new testAutocomplete(field, dictionary); field.setDocument(doc); return field; } public static void main(String args[]) { //Liste des String qui seront autocompleté /*********************************************************************/ String[] dict = { "java", "javase", "javaee", "javame", "j2se", "j2ee", "j2me" }; /********************************************************************/ //Le jtextField qui sera autocompeté final JTextField field = testAutocomplete .createAutoCompleteTextField(dict); //Action clavier touche entrer field.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { int key = e.getKeyCode(); if (key == KeyEvent.VK_ENTER) { Toolkit.getDefaultToolkit().beep(); System.out.println(field.getText()); } } }); //creation de fenetre principale JFrame frame = new JFrame("Autocomplete"); frame.setLayout(new FlowLayout()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new JLabel("Text Field: ")); frame.add(field); frame.pack(); frame.setVisible(true); } }

Conclusion :


Have fun!!

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.