Vaadin 组合框分隔符
Vaadin combobox separator
我目前正在开发一个 Vaadin 应用程序,我已经满足了在项目之间使用一些分隔符的 ComboBox
的需要。我一直在寻找周围,目前似乎没有办法实现这一目标。
更具体:
- 分隔符是什么意思? 分隔符是
ComboBox
中的一项,大概不能select编辑。此项的标题应该是可定制的,以达到类似这样的效果:Section 1 Thing 1, Thing 2 Section 2 事情 3,事情 4
- 一定要加粗吗? 不行,只是举个例子。我可以使用类似“-- 第 1 节 --” 的东西,那里没有问题。
- 由于主要思想是使用
ComboBox
,任何答案都应至少提供与其相同的功能。 即:过滤、添加元素...
到目前为止我尝试过的:
我重写了 ComboBox
的 setInternalValue
方法,无法 select 像这样的分隔符:
public class ComboBoxWithSeparators() {
@Override
protected void setInternalValue(Object newValue) {
Object oldValue = super.getValue();
if(isSeparator)
super.setInternalValue(oldValue);
else
super.setInternalValue(newValue);
}
}
这有点管用,但是当您 select 分隔符时,它会在 selected 框中显示几分之一秒,然后被旧元素覆盖。
所以,我的实际问题是: 有没有办法不启用 selecting ComboBox
中的项目?
相关: Add an item in ComboBox
and disable it with JS
目前无法在 Vaadin 中获得带有分隔符的 ComboBox
之类的东西,但是有一些解决方法可以代替它:
该组件支持分隔符、类别和 enabling/disabling 项。缺点是它不允许像 ComboBox
这样的过滤,但您可以为通常的 select 离子添加快捷方式。
Anidated ComboBox
:
这样您可以按 or/and 类型的项目进行过滤,但您无法看到您拥有的每个项目,因为它们是按 categories/types 筛选的。当然,您可以添加一个包含所有元素的类别来绕过此限制。
ComboBox
没有-select可用的项目:
此解决方法的作用与通常的 ComboBox
相同,但您正在覆盖 #setInternalValue
以使某些元素无法 select,例如:
public class ComboBoxWithSeparators() {
@Override
protected void setInternalValue(Object newValue) {
Object oldValue = super.getValue();
if(isSeparator(newValue))
super.setInternalValue(oldValue);
else
super.setInternalValue(newValue);
}
}
这里的问题是您可以 实际上 select 分隔符,但是 #setInternalValue
覆盖将恢复旧元素。这可能会导致奇怪的行为。
- @AndréSchild nativeSelectExt7:
此选项提供与 ComboBox
相同的功能,没有 select 可用的项目 但更好,因为它突出显示禁用的项目,并且完全不允许 selecting其中之一。
我目前正在开发一个 Vaadin 应用程序,我已经满足了在项目之间使用一些分隔符的 ComboBox
的需要。我一直在寻找周围,目前似乎没有办法实现这一目标。
更具体:
- 分隔符是什么意思? 分隔符是
ComboBox
中的一项,大概不能select编辑。此项的标题应该是可定制的,以达到类似这样的效果:Section 1 Thing 1, Thing 2 Section 2 事情 3,事情 4 - 一定要加粗吗? 不行,只是举个例子。我可以使用类似“-- 第 1 节 --” 的东西,那里没有问题。
- 由于主要思想是使用
ComboBox
,任何答案都应至少提供与其相同的功能。 即:过滤、添加元素...
到目前为止我尝试过的:
我重写了 ComboBox
的 setInternalValue
方法,无法 select 像这样的分隔符:
public class ComboBoxWithSeparators() {
@Override
protected void setInternalValue(Object newValue) {
Object oldValue = super.getValue();
if(isSeparator)
super.setInternalValue(oldValue);
else
super.setInternalValue(newValue);
}
}
这有点管用,但是当您 select 分隔符时,它会在 selected 框中显示几分之一秒,然后被旧元素覆盖。
所以,我的实际问题是: 有没有办法不启用 selecting ComboBox
中的项目?
相关: Add an item in ComboBox
and disable it with JS
目前无法在 Vaadin 中获得带有分隔符的 ComboBox
之类的东西,但是有一些解决方法可以代替它:
该组件支持分隔符、类别和 enabling/disabling 项。缺点是它不允许像 ComboBox
这样的过滤,但您可以为通常的 select 离子添加快捷方式。
Anidated
ComboBox
:
这样您可以按 or/and 类型的项目进行过滤,但您无法看到您拥有的每个项目,因为它们是按 categories/types 筛选的。当然,您可以添加一个包含所有元素的类别来绕过此限制。ComboBox
没有-select可用的项目:
此解决方法的作用与通常的ComboBox
相同,但您正在覆盖#setInternalValue
以使某些元素无法 select,例如:public class ComboBoxWithSeparators() { @Override protected void setInternalValue(Object newValue) { Object oldValue = super.getValue(); if(isSeparator(newValue)) super.setInternalValue(oldValue); else super.setInternalValue(newValue); } }
这里的问题是您可以 实际上 select 分隔符,但是 #setInternalValue
覆盖将恢复旧元素。这可能会导致奇怪的行为。
- @AndréSchild nativeSelectExt7:
此选项提供与ComboBox
相同的功能,没有 select 可用的项目 但更好,因为它突出显示禁用的项目,并且完全不允许 selecting其中之一。