Why does Table.formatPropertyValue() return a String?

Shouldn’t Table.formatPropertyValue() return an ‘Object’ to allow one to return a Component, like a Label? What I want to do is format the String for a given column, but then ALSO have that String show up in a Label? Can anyone tell me how to do this? I’m probably missing something really simple.

I think you should use Table’s addGeneratedColumn-feature for your use case. The Table.formatPropertyValue() return String since it is faster to render. But, Table’s ColumnGenerator is for more complicated cases where the user wants to generate Component’s (like Label, Layouts etc) for the table cells. For a reference see
The book of Vaadin
chapter 5.14.5