1

在此处输入图像描述

我正在使用 Wea​​ther Underground 在 Java 中创建一个天气应用程序,我发现它确实有一些城市的数据。

最初,我打算使用GeopIP自动获取用户的位置,但由于对城市的支持有限,我决定让用户在每次程序启动时选择城市。

我希望用户能够从 Weather Underground 支持的城市中选择一个城市。用户将输入姓名,当他/她输入姓名时,可能的位置将以类似于图片中所示的方式显示。

我的问题是:

  • 如何实现此搜索功能?
  • 我最初的猜测是创建一个Vector包含所有城市名称的名称,然后使用蛮力找到匹配项并显示在 aJPopup或 a中JWindow containing a JList,但我想必须有更好的方法

    改写:

    我不明白的是我在必须使用的数据结构中保留什么信息?我应该手动创建一个支持的城市列表Weather Underground还是有其他方法可以做到这一点?

    4

    2 回答 2

    3

    看一下Trie数据结构(也称为数字树或前缀树)。自动补全是其有用性的最常见示例之一。

    以下文章有一个很好的非常平易近人的解释:

    使用 Tries 推出您自己的自动完成解决方案。

    于 2013-02-12T18:08:57.523 回答
    1

    如果你 google autosuggestcombobox你会得到一些有趣的结果:

    这个是用 JavaFX 编写的——我自己已经使用并扩展了它。它非常有用。使用 JavaFX “免费”获得什么:带有鼠标右键单击的上下文菜单,它是自动生成的,其中包含一些常见的“东西”,例如剪切、复制和粘贴,甚至撤消!因此,我可以推荐该解决方案。进入 JavaFX 并不难——而且我认为它比 Swing 更容易学习——而且看起来更酷!然而,这种实现有一些缺点——尤其是当布局不是左对齐时,因为它只是组合框顶部的文本字段。

    好的——但如果你想坚持使用 Swing——你可能会使用这个。我自己没有使用过,但代码看起来非常简单且非常干净——我必须承认,它比 JavaFX 的实现更干净(但它有一些不错的特性)。所以 - 也许你尝试 - 并扩展它?它只是建立在JComboBox.

    于 2013-02-12T18:21:07.300 回答