AutoComplete Text Field in Swing

Posted by John C.
2
Jul 27, 2015
215 Views
Have a lot of items in combo box makes user irritated when running the program, especially when fast input is needed, manual search by scrolling down the scroll bar is so time consuming but can be avoided if we can get what item we want to choose by just write first or second letter of it.

In another case you maybe want to make a text field with some suggestion input like search engine text field. To make something like that, we need JTextField and JComboBoxtogether as one.
How to Make Auto Complete Text Field in Swing, Make Auto Complete Text Field in Swing, Auto Complete Text Field in Swing, Complete Text Field in Swing, Text Field in Swing,

Custom JComboBox :

import java.awt.event.ItemEvent;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.plaf.basic.BasicComboBoxEditor;
 
public class AutoComboBox extends JComboBox {
private class AutoTextFieldEditor extends BasicComboBoxEditor {
 
private AutoTextField getAutoTextFieldEditor() {
return (AutoTextField) editor;
}
 
AutoTextFieldEditor(java.util.List list) {
editor = new AutoTextField(list, AutoComboBox.this);
}
}
 
public AutoComboBox(java.util.List list) {
isFired = false;
autoTextFieldEditor = new AutoTextFieldEditor(list);
setEditable(true);
setModel(new DefaultComboBoxModel(list.toArray()) {
 
protected void fireContentsChanged(Object obj, int i, int j) {
if (!isFired)
super.fireContentsChanged(obj, i, j);
}
 
});
setEditor(autoTextFieldEditor);
}
 
public boolean isCaseSensitive() {
return autoTextFieldEditor.getAutoTextFieldEditor().isCaseSensitive();
}
 
public void setCaseSensitive(boolean flag) {
autoTextFieldEditor.getAutoTextFieldEditor().setCaseSensitive(flag);
}
 
public boolean isStrict() {
return autoTextFieldEditor.getAutoTextFieldEditor().isStrict();
}
 
public void setStrict(boolean flag) {
autoTextFieldEditor.getAutoTextFieldEditor().setStrict(flag);
}
 
public java.util.List getDataList() {
return autoTextFieldEditor.getAutoTextFieldEditor().getDataList();
}
 
public void setDataList(java.util.List list) {
autoTextFieldEditor.getAutoTextFieldEditor().setDataList(list);
setModel(new DefaultComboBoxModel(list.toArray()));
}
 
void setSelectedValue(Object obj) {
if (isFired) {
return;
} else {
isFired = true;
setSelectedItem(obj);
fireItemStateChanged(new ItemEvent(this, 701, selectedItemReminder,1));
isFired = false;
return;
}
}
 
@Override
protected void fireActionEvent() {
if (!isFired)
super.fireActionEvent();
}
 
private AutoTextFieldEditor autoTextFieldEditor;
 
private boolean isFired;
 
}
For Final Code and full article check the Geek On Java
Comments
avatar
Please sign in to add comment.