我正在使用Weather Underground在Java中创建天气应用程序,我发现它确实有一些城市的数据。
最初,我计划使用GeopIP
自动获取用户的位置,但由于对城市的支持有限,我决定让用户在每次程序启动时选择城市。
我希望用户能够从Weather Underground支持的城市中选择一个城市。用户将输入名称,当他/她输入名称时,可能的位置将以与图片中所示类似的方式显示。
我的问题是:
我最初的猜测是创建一个包含所有城市名称的Vector
,然后使用强力来查找匹配并显示在JPopup
或JWindow containing a JList
中,但我猜必须有一个更好的方法
我不明白 WHAT INFO 我必须保留在必须使用的数据结构中吗?我应该手动创建Weather Underground
支持的城市列表,还是有其他方法可以实现?
答案 0 :(得分:3)
查看Trie数据结构(也称为数字树或前缀树)。自动完成是其有用性最常见的例子之一。
以下文章有一个非常平易近人的解释:
答案 1 :(得分:1)
如果你谷歌autosuggestcombobox,你会得到一些有趣的结果:
This一个用JavaFX编写 - 我已经使用并扩展了它。这非常有用。使用JavaFX“免费”获得的内容:一个右键单击的上下文菜单,它是自动生成的,包含一些常用的“东西”,如剪切,复制和放大。粘贴甚至撤消!所以,我可以推荐这个解决方案。进入JavaFX并不是那么难 - 我认为它比Swing更容易学习 - 看起来更酷!然而,这种实现有一些缺点 - 特别是当布局没有左对齐时,因为它只是组合框顶部的文本字段。
好的 - 但如果你想坚持Swing - 你可以使用this one。我自己没有使用它,但代码看起来非常简单和干净 - 比我必须承认的JavaFX的实现更清晰(但它有一些很好的功能)。所以 - 也许你尝试 - 并扩展它?它仅在JComboBox
上构建。