【发布时间】:2011-08-29 09:28:59
【问题描述】:
我正在使用 swing 和 awt 库在 Java 中编写一个通讯录应用程序。该应用程序由一个使用 TreeSet 作为 abstractListModel 的 JList 组成。
TreeSet 用于名为 Contact 的类,该类具有私有比较器类,可根据联系人的名字对联系人进行排序。 private boolean equals(Object o) 方法返回 true 如果 Contact 的 mobileNumber 与 O 相同(当然是在转换之后)。
我想在此应用程序中添加搜索功能。我进行了搜索 JTextField 并添加了一个 keyListener ,我想要做的是在按下每个键后,列表会显示一组包含搜索词的缩小结果。在 TreeSet 或任何其他集合中是否有此方法?我希望它类似于您在 iPod 中的音乐应用程序中的内容,例如,当您键入字母“f”时,它会列出所有包含字母 F 的歌曲,但仅在您键入“50 cent”时出现您想要的歌手的歌曲。
感谢您的帮助。
【问题讨论】:
-
只是为了更清楚。假设我的书中有 4 个联系人:Erich、Erica、Erin 和 Dave。我想要的是: - 当我输入 E 时,列表只显示 Erich、Erica 和 Erin。 - 当我输入 Eric 时,列表只显示 Erich 和 Erica - 当我输入 Erich 时,列表只显示 Erich。基本上,它会在按下每个键时缩小结果范围。
-
无论怎样解决搜索问题:不要使用 KeyListener(你永远不想在应用程序代码中使用 KeyListener)。这里,合适的观察者服务器是 DocumentListener