java - 如何在 Vaadin 网格列中添加图标?
问题描述
我正在使用 vaadin 8。我需要在某个列的 vaadin 网格上显示图标。如果ID
匹配,则需要显示 I 图标。
如果我这样做grid.getColumn("0")
。如果我记录它,我会得到null
. 我该怎么做 ?
这就是我所拥有的
class Person{
private int ID;
private String name;
public Person(int ID, String name) {
this.ID = ID;
this.name = name;
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
final VerticalLayout layout = new VerticalLayout();
Grid<Person> personGrid = new Grid<>();
List<Person> personList = Arrays.asList(
new Person(1,"a"),
new Person(2,"b"),
new Person(3,"c")
);
personGrid.setItems(personList);
personGrid.addColumn(Person::getID).setCaption("ID");
personGrid.addColumn(Person::getName).setCaption("name");
layout.addComponent(personGrid);
解决方案
您可以在添加列时使用 ComponentRenderer 在列中显示图标。我喜欢直接使用简写形式grid.addComponentColumn(item -> {return component});
personGrid.addComponentColumn(person -> {
if(person.getId() == 2){ // use your own matching logic here
return VaadinIcon.WHATEVER_ICON.create();
} else {
return new Span(); // not sure right now if returning null is good idea, so I return Span instead.
}
).setKey("myIcon"); // set a column key so you can access this column later on using grid.getColumnByKey("myIcon");
编辑:我刚刚意识到您在询问 Vaadin 8。对于 Vaadin 8,它有点不同,因为 VaadinIcons 不是组件。相反,您返回 Icon 字符串。
V8不是我的强项,如果这不起作用我道歉
personGrid.addColumn(person -> {
if(person.getId() == 2){ // use your own matching logic here
return VaadinIcons.WHATEVER_ICON.getHtml();
} else {
return "";
}, new HtmlRenderer()
).setId("myIcon"); // set column id so you can access the column later on using grid.getColumn("myIcon");
推荐阅读
- spring-boot - 如何使用我的 Google 登录前端而不是 keycloak UI 来授权我的应用程序
- flake8 - flake8 忽略配置文件和 vimrc
- python - pandas - 根据列值删除数据框中的重复行
- c# - 从 Windows 窗体启动 Web API
- reactjs - 了解 React 结构
- c# - Xamarin.Forms - 页面崩溃应用程序与 System.Reflection.TargetInvoicationException
- powershell - Invoke-Command 和 exe 引发终止错误
- sql - Sql:如何获取某年的月收入和支出总额
- json - Groovy - json - 通过子属性查找父级
- linux - docker:在linux中找不到命令