有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (1) 个答案

  1. # 1 楼答案

    这实际上不是很容易实现的,如果您希望在流程结束时有一个灵活且可重用的解决方案,就不容易实现

    你需要一个JTextField(好吧,这很明显),一个JList和一个JPopupMenuJWindow

    您需要某种过滤机制,它可以接受String并生成List个匹配项,然后这些匹配项可以显示在JList中。这将要求您为特定的实现提供ListCellRenderer

    您需要将DocumentListener附加到JTextField。更新/更改文档时,需要将文本字段的文本传递给筛选引擎,以查找所有可能的匹配项,并在JList中显示它们

    如果弹出窗口不可见,则需要使其可见,同时考虑到列表可能不适合基于文本字段所在位置的屏幕。如果可见,您可能需要重新打包窗口,以便更好地容纳可用选项(如果有)

    如果用户离开该字段,您需要决定是否要根据第一次匹配自动完成文本、使该字段无效或保持文本不变,并关闭弹出窗口(如果可见)

    如果用户单击某个值,则需要提取该项的String表示,并将其应用于文本字段,然后关闭弹出窗口

    您需要将键绑定添加到文本字段中,以适应可打开弹出窗口和/或移动到列表中第一项的向下箭头。这会导致注意力丧失,所以你需要做好准备

    您可能还希望为弹出/字段提供一个转义键盘绑定,以便用户可以关闭弹出