GridPro does not display in a tab view

I’ve been working on this for two days and found various references on the Web to similar problems, including the PagedTab 3rd party component. None of them work in the latest Vaadin (14.4.1).

When the page displays, I can see the grid in the Chrome developer elements list, and can drill down to specific columns and cells. When I highlight a cell in dev tools, it is shown in the browser window. But otherwise it’s invisible, even though I call setVisible(true) in the event handler. The tab, however is visible. See attached screenshot if that’s not clear.

Here is my current code:

	package com.clarity.ui.views;

	import com.clarity.backend.TestModels;
	import com.clarity.ui.MainLayout;
	import com.clarity.ui.model.Model;
	import com.clarity.ui.model.Row;
	import com.clarity.ui.model.Spreadsheet;
	import com.clarity.ui.views.sheet.SpreadsheetView;
	import com.vaadin.flow.component.gridpro.GridPro;
	import com.vaadin.flow.component.orderedlayout.VerticalLayout;
	import com.vaadin.flow.component.tabs.Tab;
	import com.vaadin.flow.component.tabs.Tabs;
	import com.vaadin.flow.router.HasDynamicTitle;
	import com.vaadin.flow.router.Route;

	import java.util.HashMap;
	import java.util.Map;

	@Route(value = "model", layout = MainLayout.class)
	public class ModelView extends ViewFrame implements HasDynamicTitle {

	  private Model model;

	  // A map of tabs to Grids
	  Map<Tab, GridPro<Row>> tabsToSheets = new HashMap<>();

	  public ModelView() {
		this.model = TestModels.models()[0]

	  public void setModel(Model model) {
		this.model = model;

	  public void createContent() {

		// container for tab content. Added with onSelectedChangeListener
		VerticalLayout container = new VerticalLayout();

		Tab[] tabArray = { new Tab(false, "spreadsheet 1")};
		Tabs tabs = new Tabs(tabArray);

		SpreadsheetView spreadsheetView = new SpreadsheetView();
		GridPro<Row> grid = spreadsheetView.getGrid();

		tabs.addSelectedChangeListener(event -> {

		setViewContent(tabs, container);

	  public String getPageTitle() {
		return model.getName();