问题
I have a large set of data from which the user has to select one. I'm thinking of a way to implement it (of course, in a GUI). I have a few ideas. But just thought of posting here as there may be better alternatives..
Say, user has to select a name from a large set of user base. If I simply put a text field for user to enter the name, then there can be issues like entering same name in different formats, misspelling etc...
I see two options here
- Using a combo box
- Using a list (Actually i'm thinking of something like a
tool tip
. As I cant show the whole list always due to space issues)
But combo box won't be much user friendly i guess. As the user will have to scroll around the whole list to select an entry. If the number of entries are too large, this will be
Which means, now I'm left only one option. A popping up list, which will change the content according the text user is entering in the text field. So he can type first few letters and the list will show all the entries starting from the entered text. Got my point, right?
Are there any other better to achieve this kind of need?
If I'm going to implement above, what will be the best way to follow. I'm thinking of extending the JTextField
to add required functionality. Well, I'll put some method to set the popup list entries. And I'll add some actionListner
to watch the text field, and control the popup list accordingly...
回答1:
Autocomplete is what you are probably looking for. Google for "java swing jcombobox autocomplete" and limit results for the last couple of years to get relevant results. There will be a lot of examples and ideas on how to implement this with custom code.
I believe there is also some custom libraries like "swingx" that provide at least partial or full implementations to save time.
http://swingx.java.net/
They have released code as recently as the beginning of this years so it appears active and might have what you need.
回答2:
You could take a look at SwingLab's autocomplete feature, it allows you to attach it to a JCombBox
, JList
or JTextComponent
回答3:
use AutoComplete JComboBox/JTextField
based on Standard Java Classes
no issue with larger sets of data
no issue with
Focus
,BackSpace Key
,Caret
for better performance to required sort the
array
before usesimple workaround for
setStrict(true/false)
, restrict input toarray
来源:https://stackoverflow.com/questions/11919914/best-way-to-implement-a-selection-box-from-a-large-number-of-entries