@Override
	public void createDefaultColumnsFromModel() {

		TableModel tableModel = getModel();
		if (tableModel == null) {
			return;
		}

		TableColumnModel cm = getColumnModel();
		if (!(cm instanceof GTableColumnModel)) {
			// some tables do not use dynamic column
			super.createDefaultColumnsFromModel();
			return;
		}

		// Disable the column model updates here, as we know that the removal and adding of
		// columns we are about to do will trigger copious update events.  Restore when done.
		// This helps prevent flashing of columns as they are added and removed.
		GTableColumnModel tableColumnModel = (GTableColumnModel) getColumnModel();
		boolean wasEnabled = tableColumnModel.setEventsEnabled(false);

		removeAllColumns();

		// Create new columns from the model
		int columnCount = tableModel.getColumnCount();
		for (int i = 0; i < columnCount; i++) {
			TableColumn newColumn = new TableColumn(i);
			initialTableColumnSize(newColumn, tableModel, i);
			newColumn.setHeaderRenderer(new GTableHeaderRenderer());
			addColumn(newColumn);
		}

		for (int i = 0; i < columnCount; i++) {
			TableCellRenderer headerRenderer = getHeaderRendererOverride(i);
			if (headerRenderer != null) {
				tableColumnModel.getColumn(i).setHeaderRenderer(headerRenderer);
			}
		}

		tableColumnModel.setEventsEnabled(wasEnabled);
	}
Installs the default {@link TableCellRenderer}s for known Ghidra table cell data classes.
Subclasses can override this method to add additional types or to change the default
associations.
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GTable.java