docs: public void setGridScreen(JComponent gridScreen, boolean bSetupJTable)
      {
          if (gridScreen instanceof JTable)
          {
              JTable control = (JTable)gridScreen;
              ThinTableModelListener thinTableModelListener = new ThinTableModelListener(control, this);
              if (m_modelListeners == null)
                  m_modelListeners = new HashSet<ThinTableModelListener>();
              m_modelListeners.add(thinTableModelListener);
              control.getSelectionModel().addListSelectionListener(thinTableModelListener);   // Listen for selection change to update
              if (bSetupJTable)
              {
                  FontMetrics fm = control.getFontMetrics(control.getFont());
                  int rowHeight = (int)(Math.max(control.getRowHeight(), fm.getHeight()) * 1.5);
                  int iCharWidth = (int)(fm.charWidth('X') * 1.5);
                  control.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  //              control.setAutoCreateColumnsFromModel(false);
                  control.setColumnSelectionAllowed(false); // Don't allow column selections
                  control.setModel(this);
                  JTableHeader tableHeader = control.getTableHeader();
                  TableColumnModel columnModel = tableHeader.getColumnModel();
                  for (int iIndex = 0; iIndex < this.getColumnCount(); iIndex++)
                  {
                      Convert field = this.getFieldInfo(iIndex);
                      int iWidth = JScreenConstants.ICON_SIZE.width;
                      if (field != null)
                          iWidth = field.getMaxLength() * iCharWidth;
                      TableColumn tableColumn = columnModel.getColumn(iIndex);
                      TableCellRenderer cellRenderer = this.createColumnCellRenderer(iIndex);
                      if (cellRenderer == null)
                          if (field instanceof FieldInfo)
                      {
                          if (Number.class.isAssignableFrom(((FieldInfo)field).getDataClass()))
                          {
                              tableColumn.setCellRenderer(new JCellTextField(field.getMaxLength(), true));    // Align right, use calc length.
                              tableColumn.setCellEditor(new JCellTextField(field.getMaxLength(), true));  // Align right, use calc length.
                          }
                          if (Boolean.class.isAssignableFrom(((FieldInfo)field).getDataClass()))
                          {
                              cellRenderer = new JCellCheckBox(null);
                              tableColumn.setCellEditor(new JCellCheckBox(null));
                          }
                      }
                      if (cellRenderer != null)
                      {
                          tableColumn.setCellRenderer(cellRenderer);
                          if (cellRenderer instanceof JComponent)
                              iWidth = ((JComponent)cellRenderer).getPreferredSize().width;
                          if (field != null)
                              field.addComponent(cellRenderer);
                      }
                      TableCellEditor cellEditor = this.createColumnCellEditor(iIndex);
                      if (cellEditor != null)
                      {
                          tableColumn.setCellEditor(cellEditor);
                          if (field != null)
                              field.addComponent(cellEditor);
                      }
                      tableColumn.setPreferredWidth(iWidth);  // Fixed column width
  
                      String strFieldName = this.getColumnName(iIndex);
                      tableColumn.setHeaderValue(strFieldName);
                  }
          //      this.addMouseListenerToHeaderInTable(control);      // Notify model of row order changed (clicks in the header bar)
                  if (rowHeight > 10)
                      control.setRowHeight(rowHeight);
              }
              if (control.getModel() == null)
                  control.setModel(this);
              
              control.getModel().addTableModelListener(new FixScrollersOnNewTable(control));
          }
      }