作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的 vaadin ui 中的 TwinColSelect 中定义所选项目的最大数量。我怎样才能实现它。我想允许用户从可用的 8 个中仅选择 4 个行星。我当前的代码是
TwinColSelect table = new TwinColSelect();
table.setImmediate(true);
String planets[] = {"Mercury", "Venus", "Earth", "Mars",
"Jupiter", "Saturn", "Uranus", "Neptune"};
for (int pl=0; pl<planets.length; pl++)
table.addItem(planets[pl]);
table.addListener(new Property.ValueChangeListener() {
public void valueChange(ValueChangeEvent event) {
/*String [] arr=(String [] )event.getProperty().getValue();
if(arr.length>=4){
return;
}*/
}
});
最佳答案
您可以通过更改 select 的值来实现类似这样的功能:
//Constant declared somewhere in the class
private static final int SELECTED_ITEMS_LIMIT = 4;
...
table.addListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
Collection selectedItems = (Collection) event.getProperty().getValue();
if(selectedItems.size()>SELECTED_ITEMS_LIMIT) { //Set no more than SELECTED_ITEMS_LIMIT values
Set<String> noMoreThanLimitItems = new HashSet<String>(selectedItems.size());
int counter = 0;
for(Object item : selectedItems) {
if(counter>=SELECTED_ITEMS_LIMIT) {
break;
}
noMoreThanLimitItems.add((String) item);
counter++;
}
event.getProperty().setValue(noMoreThanLimitItems);
}
}
});
缺点:
Property.setValue
会触发 ValueChangeEvent
。因此,当用户尝试选择四个以上的行星时,处理代码将每次执行两次关于java - 如何在 TwinColSelect 中定义所选项目的最大限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605156/
我想在我的 vaadin ui 中的 TwinColSelect 中定义所选项目的最大数量。我怎样才能实现它。我想允许用户从可用的 8 个中仅选择 4 个行星。我当前的代码是 TwinColSelec
我遇到以下问题。我有一个包含地区列表的组合框,现在当组合框的值发生变化时,我还必须更改 TwinColSelect 左列的值,但右列必须保持不变。 我该怎么办? 最佳答案 我的建议是扩展 TwinCo
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 要求提供代码的问题必须表现出对所解决问题的最低限度的了解。包括尝试的解决方案、为什么它们
如何将实体绑定(bind)到 Vaadin 中的 TwinColSelect?我可以对简单的组件(TextField、ComboBox)执行此操作,但我不知道如何对 TwinColSelect 组件执
我是一名优秀的程序员,十分优秀!