【问题标题】:How to display a Grid cell tooltip in Vaadin Flow如何在 Vaadin Flow 中显示网格单元格工具提示
【发布时间】:2019-02-20 00:41:41
【问题描述】:

使用 Vaadin 8,您可以为网格单元格设置工具提示。此功能在 Vaadin Flow 中不可用(当前使用 v 11.0.0)。有其他选择吗?

【问题讨论】:

    标签: tooltip vaadin vaadin-grid vaadin14


    【解决方案1】:

    目前还没有内置功能。最简单的方法可能是设置元素的“title”属性。一个例子是使用 TemplateRenderer,这里有一个例子

    https://vaadin.com/components/vaadin-grid/java-examples/using-templates

    从上面的示例中复制代码的相关部分

    grid.addColumn(TemplateRenderer.<Person> of(
            "<div title='[[item.name]]'>[[item.name]]<br><small>[[item.yearsOld]]</small></div>")
            .withProperty("name", Person::getName).withProperty("yearsOld",
                    person -> person.getAge() > 1
                            ? person.getAge() + " years old"
                            : person.getAge() + " year old"))
            .setHeader("Person");
    

    【讨论】:

      【解决方案2】:

      感谢@Tatu-Lund 的回答,我明白了,但由于链接不再指向有效位置,而且div 的示例代码可能会给游戏带来其他复杂性,我决定发布另一个答案.

      使用div 作为包装元素具有title 属性会起作用,但它会阻止调整列的大小。所以使用span 会是一个很好的替代品。

      此外,设置title 将有助于显示正常的工具提示,但这不足以支持可访问性。除了title 之外,设置aria-label 会更流畅:

      grid.addColumn(TemplateRenderer.<Person> of(
          "<span title='[[item.name]]' aria-label='[[item.name]]'>[[item.name]]</span>")
          .withProperty("name", Person::getName)
          .setHeader("Person");
      

      但是,这不是一个完整的解决方法,因为这无助于在触摸设备上浏览 Web 应用程序。更多信息请参考以下问题:https://github.com/vaadin/flow/issues/4169

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-25
        • 2014-12-08
        • 1970-01-01
        • 2015-08-30
        • 1970-01-01
        • 2017-01-18
        • 1970-01-01
        • 2010-10-04
        相关资源
        最近更新 更多