如何将vaadin表中列的值设置为链接或按钮?

时间:2015-12-11 14:18:53

标签: java vaadin

我需要将列“anzahl”中的值转换为链接或按钮,并且我正在努力使用vaadin表的结构。我从mysql表名“SYSTEM”获取数据库值(在实体类System中)。

这是我定义的表属性:

private void initSystemTable() {
        JPAContainer<System> systems = new SystemServiceDB().getAllSystems();
        table_system.setSizeFull();
        table_system.setContainerDataSource(systems);
        table_system.setVisibleColumns(new Object[] { "softwarebezeichung", "version", "anzahl", "lizenzen" });
        table_system.setColumnHeader("softwarebezeichung", "Softwarebezeichung");
        table_system.setColumnHeader("version", "Version");
        table_system.setColumnHeader("anzahl", "Anzahl");
        table_system.setColumnHeader("lizenzen", "Vorhandene lizenzen");
        table_system.setImmediate(true);
    }

和类SystemServiceDB:

public class SystemServiceDB implements SystemService{

        @Override
    public JPAContainer<System> getAllSystems()
    {
        JPAContainer<System> systems = JPAContainerFactory.make(System.class, "help-pu");

        return systems; 
    }
}

这是我的输出表:

enter image description here

我无法使用addContainerProperty将列设置为从mysql加载这些值,我找不到解决此问题的方法。如果有人能帮我解决这个问题,我将不胜感激。

table_system.addContainerProperty("anzahl", Link.class, null);
table_system.addContainerProperty("anzahl", Button.class, null);

1 个答案:

答案 0 :(得分:4)

使用生成的列。

这是带有按钮的生成列的示例:

table.addGeneratedColumn("generated", new ColumnGenerator() {

        @Override
        public Component generateCell(Table source,
                    final Object itemId, Object columnId) {
            Button button = new Button("caption");
            //Listener for the button
            button.addClickListener(Event -> {
                //Your code
            });
            return button;
        }          
});