 <p>Vaadin provides a DefaultTableFieldFactory which does map</p> <ul> <li>Date to a DateField</li> <li>Boolean to a CheckBox</li> <li>other to TextField</li> </ul> <p>The DefaultTableFieldFactory is already set on the table. So in your case, if you just want to have CheckBoxes for your boolean fields, I wouldn't implement an own TableFieldFactory. Here's an example:</p> <pre><code>Table table = new Table(); table.addContainerProperty("text", String.class, ""); table.addContainerProperty("boolean", Boolean.class, false); table.setEditable(true); Object itemId = table.addItem(); table.getItem(itemId).getItemProperty("text").setValue("has accepted"); table.getItem(itemId).getItemProperty("boolean").setValue(true); </code></pre> <p>If you really need to have your own TableFieldFactory then Vaadin recommends:</p> <blockquote> <p>You could just implement the TableFieldFactory interface, but we recommend that you extend the DefaultFieldFactory according to your needs. In the default implementation, the mappings are defined in the createFieldByPropertyType() method (you might want to look at the source code) both for tables and forms.</p> </blockquote> <p>In your code given in the question you always return a TextField. For your missing CheckBoxes you need to return in the specific case a CheckBox.</p> <p>Don't forget to <code>setEditable(true)</code> when using FieldFactories.</p> <p>More information <a href="https://vaadin.com/book/-/page/components.table.html" rel="nofollow">here</a> under 5.16.3. Editing the Values in a Table.</p>