我有1个列,包含100个名称,从A到Z。我必须选择1。我希望能够在jtextfield中插入几个字母,按Enter,然后选择与文本匹配的行。我该怎么做?
一个例子是,我键入“ Bro”,按Enter,然后选择内容跳到以“ Bro”开头的名字。我的意思不是过滤器,我想跳到它。
那么,为什么要使用JTable?为什么不使用JList?我希望能够在jtextfield中插入几个字母,然后按Enter,
您可以在键入(或删除)每个字母时进行搜索,而不必强迫用户按Enter。创建用于输入名称的JTextField进行搜索:
将DocumentListener添加到文本字段的Document。阅读有关Listening For Changes on a Document的Swing教程中的部分,以了解基础知识。
- 在
DocumentListener
中,您将获得JList
(或JTable
)的模型,然后遍历模型中的每个项目,以找到以文本字段中的文本开头的第一个项目的索引。- 如果使用
JList
,则只需使用setSelectedIndex(...)
方法选择该行,然后使用ensureIndexIsVisible(...)
方法滚动到该行- [如果使用
JTable
,则使用changeSelection(...)
方法选择行,然后使用scrollRectToVisible(...)
方法使用来自getCellRect(...)
方法的数据滚动到该行。