如何为 JAVA Swing 做最好的查找文本字段,如下所示:
1 回答
这实际上不是很容易实现,如果您希望在流程结束时获得灵活且可重用的解决方案,则并非如此。
你需要 a JTextField
(好吧,这很明显), aJList
和 a JPopupMenu
or JWindow
。
您需要某种过滤机制,可以采用 aString
并产生 a List
of 匹配项,然后可以在JList
. 这将要求您ListCellRenderer
为您提供特定的实现。
您需要将 a 附加DocumentListener
到JTextField
. 当文档更新/更改时,您需要将文本字段的文本传递给过滤引擎以查找所有可能的匹配项并将它们显示在JList
.
如果弹出窗口不可见,您需要使其可见,考虑到根据文本字段的位置,列表可能不适合屏幕。如果可见,您可能需要重新打包窗口以更好地容纳可用选项(如果有)
如果用户离开该字段,您将需要决定是否要根据第一个匹配项自动完成文本、使该字段无效或保持文本原样并关闭弹出窗口(如果可见)。
如果用户单击一个值,您将需要提取该String
项目的表示并将其应用于文本字段并关闭弹出窗口。
您将需要向文本字段添加键绑定以适应down arrow可能打开弹出窗口和/或移动到列表中的第一项的键绑定。这会导致注意力不集中,因此您需要为此做好准备。
您可能还想Escape为弹出窗口/字段提供键盘绑定,以便用户可以关闭弹出窗口