【问题标题】:Is Google Suggests like functionality possible in Java SWT?Java SWT 中是否可以提供类似 Google Suggests 的功能?
【发布时间】:2012-01-31 00:38:06
【问题描述】:

我想要一个像 Google Search 这样的下拉组合框(即,当我们输入一个字母时,会显示以该字母开头的元素)。当下拉列表出现时,我们可以选择一个单词作为我们的文本框值。

我可以在 SWT 中执行此操作吗?

comboLabel.addKeyListener(new KeyListener()
{
    @Override
    public void keyReleased(KeyEvent e)
    {
        ArrayList<String> listElements = new ArrayList<String>();
        // on pressing down arrow list gets expanded i.e list drops down
        if(e.keyCode == 16777218)
        {
            comboLabel.setListVisible(true);
        }
        // if key pressed is only a number of charecter or space.
        else if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 97 && e.keyCode <= 122) || e.keyCode == 32)
        {
            // for removing all previously assigned labels
            comboLabel.remove(0,comboLabel.getItemCount()-1);
            listElements = labels.getLabels(comboLabel.getText());
        }

        for (int i=0; i<listElements.size();i++)
        {
            comboLabel.add(listElements.get(i),i);
        }
    }
});

【问题讨论】:

    标签: java autocomplete combobox swt


    【解决方案1】:

    您指的是一个自动建议的组合框。据我所知,它在任何 Java 标准小部件库中都不可用。但是,很多人已经构建了自己的自动建议组件。 Here's a good example 带有源代码和可执行的“.jnlp”扩展名。

    【讨论】:

    【解决方案2】:

    我认为 SWT 中没有类似的东西。 SWT 中的小部件必须对应于所有平台上的本地小部件(通常),因此实现类似的东西会很困难。 Nebula 项目是寻找新的或实验性的 SWT 小部件的一个地方,但我在那里也看不到它。

    【讨论】:

    • 我暂时按以下方式完成了 1) 对于输入的每个键,我将获取组合框的字符串并获取结果。 2) 删除所有之前分配的组合列表项, 3) 将新的搜索结果添加到组合。 4) 将ListVisible 属性设置为'true'。在 4) 列表下拉后,焦点从组合的文本字段中丢失。所以这种方法的困难是在输入每个键后,用户必须重新点击组合的文本字段才能获得焦点,这是一个非常糟糕的界面:(有什么改进的建议吗?
    • 您能否将您的代码发布为 sn-p,也许我可以试试看如何改进它?将其发布在原始问题中,它将得到很好的格式。
    【解决方案3】:

    应该不难。只需获取所有搜索字符串所在的列表,然后执行一些正则表达式或 indexOf 内容或 Collections.binarySearch 等。然后在包含所有选项的文本字段中绘制一个列表。我可以给你写一个例子。搜索数据是什么类型的?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-31
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多