如何在 vaadin 网格中显示复选框而不是布尔值?

How can I display checkboxes instead of boolean in vaadin grid?

我正在使用 vaadin-spring-boot-starter 21.0.7 开发一个新应用程序,并尝试在网格中呈现训练数据库信息。我想让列表中的第一列成为 Active/Inactive 的复选框,但我不知道如何完成它。我所看到的一切都是针对 Vaadin 7 或 8 的。 大多数当前代码在 MainView.java at https://github.com/gregoryleblanc/ealOperators/tree/vaadin

我使用的是一些超旧版本的 vaadin,但我想相同的解决方案也应该适用于最新版本,这是我通常的做法:

  • String
  • 类型的列
  • 列添加了 ButtonRenderer (column.setRenderer) 带有事件侦听器的渲染器,它允许我处理用户的点击操作
  • value 将是一个带有 FontAwesome 字体的字符串(添加了自定义 CSS 样式 font-family 并使用 setCellStyleGenerator 在网格中配置它)
  • 选中时使用值String.valueOf((char) FontAwesome.CHECK_SQUARE_O.getCodepoint())
  • 未选中时使用值 String.valueOf((char) FontAwesome.SQUARE_O.getCodepoint())

使用更新版本的 vaadin 可能有更简单的方法。不过这个方法应该还是可以的。

对于 Vaadin 14 及更高版本,您可以这样做。我没有使用旧版本 Vaadin 的经验。

grid.addComponentColumn(myBean -> {
  Checkbox checkbox = new Checkbox();
  checkbox.setValue(true); // this you must handle
  checkbox.addClickListener(e -> {
    // todo
  }
  return checkbox;
});

lambda 可以替换为方法引用

grid.addComponentColumn(this::createCheckboxComponent);

private Component createCheckboxComponent(MyBean myBean) {
  Checkbox checkbox = new Checkbox();
  // code here
  return checkbox;
}