Combobox Vaadin组合框:单击即可清除输入文本

Combobox Vaadin组合框:单击即可清除输入文本,combobox,vaadin,Combobox,Vaadin,我想要一个可过滤的组合框。当我点击输入文本时,光标就会出现,这样我就可以在文本中插入一些字符 由于在输入框中键入内容是为了过滤组合框中的项目,因此不再需要前面的文本。我想: 清除输入文本 选择所有文本(因此当我开始键入时 文本已清除)-根据这一点,这是不可能的 我已经在vaadin textfields上测试过了,它应该也适用于combos。 您可以清除捕获焦点事件的输入上的文本,如注释中的文本,但不要使用null,而是使用空字符串“”,只有在调用组件上的requestRepaint后才能看到更

我想要一个可过滤的组合框。当我点击输入文本时,光标就会出现,这样我就可以在文本中插入一些字符

由于在输入框中键入内容是为了过滤组合框中的项目,因此不再需要前面的文本。我想:

  • 清除输入文本
  • 选择所有文本(因此当我开始键入时 文本已清除)-根据这一点,这是不可能的

  • 我已经在vaadin textfields上测试过了,它应该也适用于combos。 您可以清除捕获焦点事件的输入上的文本,如注释中的文本,但不要使用null,而是使用空字符串“”,只有在调用组件上的requestRepaint后才能看到更改

           input.addListener(new FieldEvents.FocusListener() {
                @Override
                public void focus(FocusEvent event) {
                    input.setValue("");
                    input.requestRepaint();
                }
            });
    

    但是,要使其工作,您必须失去焦点并再次获得它,使用valueChange事件(覆盖等)可能会更好。

    我认为您必须扩展该组件,并且“onfocus”事件将值设置为null。实际上,我可以在不使用
    addListener(new FocusListener(){..})
    扩展的情况下做到这一点,但问题是,如何将该值设置为null
    setValue(null)
    不起作用您是否已将Immediate设置为true?是的,我调用
    。setImmediate(true)
    。但是
    .setImmediate(false)
    没有帮助。组合框没有
    requestReoaint()
    。那么,组合框是如何实现的呢?