java - Vaadin 随机播放 ListSelect

标签 java list vaadin shuffle vaadin7

如何随机排列 ListSelect 的项目?

因此,我有一个显示项目的 ListSelect,单击按钮后,我希望项目按顺序随机播放。

仅供引用:我正在使用 Vaadin 7 和 Eclipse Mars

编辑:

final VerticalLayout layout = new VerticalLayout();
        final Button button = new Button("Run");

        ListSelect select = new ListSelect();
        select.setRows(1000);
        select.setNullSelectionAllowed(false);
        select.addItems("Item1","Item2","Item3","Item3");

        //Shuffle the list
        button.addClickListener();

        layout.addComponents(button, select);
        layout.setMargin(true);
        layout.setSpacing(true);

        setContent(layout);
    }

最佳答案

使用BeanItemContainer对您有利的类(class):

    protected void init(VaadinRequest request) {
    final HorizontalLayout layout = new HorizontalLayout();
    final Button button = new Button("Run");

    final ListSelect select = new ListSelect();

    select.setNullSelectionAllowed(false);
    final List<ItemBean> list = new LinkedList();
    //Add elements to list
    list.add(new ItemBean("Item1", 1));
    list.add(new ItemBean("Item2", 2));
    list.add(new ItemBean("Item3", 3));
    list.add(new ItemBean("Item4", 4));
    list.add(new ItemBean("Item5", 5));

    final BeanItemContainer<ItemBean> beanBeanItemContainer = new BeanItemContainer<>(ItemBean.class);
    beanBeanItemContainer.addAll(list);

    select.setContainerDataSource(beanBeanItemContainer);


    //Shuffle the list
    button.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent clickEvent) {
            select.removeAllItems();

            Collections.shuffle(list);

            beanBeanItemContainer.addAll(list);


        }
    });

    layout.addComponents(button);
    layout.addComponent(select);
    layout.setMargin(true);
    layout.setSpacing(true);

    setContent(layout);
}

你的bean类可以定义如下:

public class ItemBean implements Serializable  {
    String name;
    int id;

    public ItemBean(String name, int id) {
        this.name = name;
        this.id = id;
    }

    @Override
    public String toString() {
        return this.name;   
    }

}

如果您还有其他问题,请告诉我!

关于java - Vaadin 随机播放 ListSelect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37390772/

相关文章:

java - 自动生成 key

java - .toUpperCase() 使用 spring/hibernate 破坏 CRUD Web 应用程序的“添加客户”按钮

java - Maven,配置具体目标

java - 表单布局 : 1 caption for 2 fields

vaadin - 使用 GridLayout 制作响应调整大小的窗口的智能布局?

java - Spring - I18n - 通过静态类访问 MessageSource?

java - HK2 服务具体化失败 javax.ws.rs.core.UriInfo 日志中出现警告,异常为 : Could not find a suitable constructor in UriInfo class

python - 在 Python 中将短划线分隔的字符串数据转换为嵌套字典/列表

c# - 如何创建包含开放通用接口(interface)的 List<T> ?

python - 从列表中删除子列表