【问题标题】:Vaadin Combobox - New ItemVaadin 组合框 - 新项目
【发布时间】:2019-01-14 17:19:27
【问题描述】:

我正在用 Java 编写代码,并且正在使用 Vaadin 8 扩展。

我有一个 Vaadin 组合框,它运行良好。但我不仅想从我的组合框中选择项目,还想选择书面输入。这意味着我想将组合框用作下拉菜单和文本编辑字段。

经过一些研究,我认为在将某些内容写入 Combo Box 后无法获得其值。文本编辑字段仅用于在下拉菜单中进行搜索。 如果我键入不属于下拉菜单的内容,则值为 null。

但似乎可以使用 setNewItemProvider 方法将新项目添加到组合框下拉菜单。

有一些示例使用旧方法 getNewItemHandler,但它们似乎不适用于最新的 Vaadin 版本 8。方法 setNewItemsAllowed 不再是 Vaadin 8 的一部分。

谁能为 Vaadin 8 提供新方法 setNewItemProvider 的示例?

【问题讨论】:

  • 能够通过写入组合框来搜索项目实际上是组合框的默认行为。正如 Gergely 的回答中所链接的,您可以使用 comboBox.setTextInputAllowed(boolean) 打开和关闭此行为,但默认情况下它是打开的。查看these examples
  • 对不起,我想我还没有说清楚。我不仅想搜索项目,还想通过 .getValue() 提取不属于项目的字符串,这意味着我还想使用 ComboBox 作为 TextEdit 字段。
  • 您不能使用它直接编辑现有项目,但您可以使用它来创建新项目。 herecomboBox.setNewItemProvider() 的一个很好的示例实现。

标签: java combobox vaadin8


【解决方案1】:

你当然可以按照你的计划去做,但是你有一个更简单的解决方案。

使组合框可编辑有一个特定的功能:javadoc

【讨论】:

  • 感谢链接。但是在链接的描述中,我可以阅读:“用户可以在字段中输入文本以过滤选择或输入新值,如果设置了新的项目提供程序或处理程序”。我仍然需要项目提供者的示例。
  • 对不起,我现在手头没有机器。我认为一个简单的addValueChangeListener(+ 之前的setNewItemsAllowed)就可以完成这项工作,无需手动处理 itemproviders。如果我错了,请告诉我,我稍后会设置它。
  • setNewItemsAllowed 不再是 Vaadin 8 的一部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
相关资源
最近更新 更多