AutoComplete Text Field in Swing
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.

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.

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
Advertise on APSense
This advertising space is available.
Post Your Ad Here
Post Your Ad Here
Comments