JTextField中的下拉列表

我想当我在文本字段中输入一些字母时,应该从我的数据库中选择相关项目,并且应该显示为下拉列表。 例如:我在文本字段中输入’J’,在我的数据库中有{{Juby’,’Jaz’,’Jasmine’,’Joggy’等名称……}这些名称应该显示为列表。所以我可以从中选择一个。依此类推其他的leters。在awt中是否有任何预定义的控制?Thnx

这是一个实现你所要求的(我认为)的一个小例子。这个例子中的数据库是一个字符串向量。

import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Answer extends JFrame { public static final int MAXITEMS = 100; JPanel panel = new JPanel(); JTextField textField = new JTextField(10); String[] myDataBase = { "Juby", "Jaz", "Jasmine", "Joggy", "one", "dog","cat", "parot" }; String[] listItems; JList theList = new JList(); public Answer() { this.add(panel); panel.setPreferredSize(new Dimension(500, 300)); panel.add(textField); panel.add(theList); textField.addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent ke) { String compareString = ("" + textField.getText() + ke.getKeyChar()); listItems = new String[MAXITEMS]; if (compareString.trim().length() > 0 ){ int counter = 0; for (int i = 0; i < myDataBase.length; i++) { if (counter < MAXITEMS) { if (myDataBase[i].length() >= compareString.length() && myDataBase[i].substring(0, compareString.length()).equalsIgnoreCase(compareString)) { listItems[counter] = myDataBase[i]; counter++; } } } } theList.setListData(listItems); } }); } public static void main(String[] args) { final Answer answer = new Answer(); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { answer.pack(); answer.setVisible(true); } }); } } 

为什么不使用JComboBox? 默认情况下,当用户在只读combobox中键入击键并且combobox中的项目以键入的击键开始时,combobox将选择该项目。

或者您可以使用setEditable(true)将JComboBox设置为可编辑,并使用KeySelectionManager 。 该链接说明了使用多个击键选择JComboBox组件中的项目。

一种选择是使用GlazedLists ,因为它有一些自动完成支持。