java 组合框输入_java – Vaadin 7组合框 – 如何在键入文本时填充和下拉?

博客内容介绍了如何从Vaadin的ComboBox派生并重写`buildFilter`方法,以创建一个自定义的ComboBox,当用户输入时,它会根据输入动态地从数据库中填充项目。关键在于覆盖`getOptionsWithFilter`方法并实现一个自定义的Container,用于与数据库交互进行过滤。
摘要由CSDN通过智能技术生成

这是一个很好的问题,也是一个无法用几句话回答的问题.我会先尝试给你一个简短的答案,然后再尝试详细说明.我目前正在攻击一个小例子来演示你想要实现的功能.但我需要更多时间.我会在得到一些结果后立即更新我的答案.

在此之前,对您的问题的简短回答是,如果您在组件上注册TextChangeEvents的侦听器,则需要有人实际触发这些事件.这通常发生在客户端,例如在TextField中.从CustomField派生时,您仍需要提供一些客户端实现. CustomField只是自定义字段实现的基础实现,没有大量现成的客户端功能.因此,在您的情况下,实际上永远不会调用TextChangeEvents的侦听器.

通过从ComboBox派生,您可以轻松完成.当在ComboBox中键入文本时,ComboBox已经内置了对前缀过滤的支持.实际的过滤器功能在Container中实现,Container是ComboBox的数据源.诀窍是覆盖受保护的方法ComboBox#getOptionsWithFilter(boolean)以在数据库中过滤并使用自定义Container实现,该实现提供来自数据库的过滤项.

更新:正如所承诺的,我编写了一个小型演示应用程序,该应用程序显示了如何编写自定义ComboBox,当用户在文本中键入时,其项目将从数据库中动态填充.这可以通过从ComboBox派生并通过覆盖方法com.vaadin.ui.ComboBox.buildFilter(String,FilteringMode)来实现.重写的方法将需要返回一个自定义的Container.Filter实现,该实现只是将当前过滤器String转移到自定义的com.vaadin.data.Container实现.然后,容器负责从数据库中提取过滤的项目并使用查询结果填充自身.在我的示例中,我派生自BeanItemContainer,我在重写方法中执行自定义数据库筛选de.oio.vaadin.SuggestingContainer.addFilter(Filter)

您可以在my GitHub project查看演示.不要犹豫,询问是否有任何不清楚的地方.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值