Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java实现自动补全_Java_Search_Autocomplete - Fatal编程技术网

用Java实现自动补全

用Java实现自动补全,java,search,autocomplete,Java,Search,Autocomplete,我正在使用weather Underground在Java中创建一个天气应用程序,我发现它确实有一些城市的数据 最初,我计划使用GeopIP自动获取用户的位置,但由于对城市的支持有限,我决定让用户在每次程序启动时选择城市 我希望用户能够选择一个城市,从一个是由地下天气支持。用户将输入名称,当他/她输入名称时,可能的位置将以与图片中所示类似的方式显示 我的问题是: 如何实现此搜索功能 我最初的猜测是创建一个包含所有城市名称的向量,然后使用蛮力找到匹配项并显示在JPopup或包含JList的JWin

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

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

我希望用户能够选择一个城市,从一个是由地下天气支持。用户将输入名称,当他/她输入名称时,可能的位置将以与图片中所示类似的方式显示

我的问题是:
  • 如何实现此搜索功能

    我最初的猜测是创建一个包含所有城市名称的
    向量
    ,然后使用蛮力找到匹配项并显示在
    JPopup
    或包含JList的
    JWindow中,但我想一定有更好的方法

    改写: 我不明白的是,我必须使用的数据结构中保留了哪些信息?我是否应该手动创建一个支持地下天气的城市列表,或者有其他方法吗?

    查看数据结构(也称为数字树或前缀树)。自动完成是它的有用性最常见的例子之一

    下面的文章有一个很好的解释:

    看看数据结构(也称为数字树或前缀树)。自动完成是它的有用性最常见的例子之一

    下面的文章有一个很好的解释:

    如果你在谷歌上搜索,你会得到一些有趣的结果:

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

    好的-但是如果你想坚持挥杆-你可以使用。我自己也没有使用过,但是代码看起来非常简单,比JavaFX的实现更干净,我必须承认(但是它有一些很好的特性)。那么-也许你可以尝试-并扩展它?它只构建在
    JComboBox

    上,如果你用谷歌搜索,你会得到一些有趣的结果:

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


    好的-但是如果你想坚持挥杆-你可以使用。我自己也没有使用过,但是代码看起来非常简单,比JavaFX的实现更干净,我必须承认(但是它有一些很好的特性)。那么-也许你可以尝试-并扩展它?它只是建立在
    JComboBox

    不,这正是你做这件事的方式(除了不使用
    Vector
    s):(在许多其他方法中)这里的具体代码。不,这正是你做这件事的方式(除了不使用
    Vector
    s):(在许多其他方法中)这里的具体代码。