uk.ac.starlink.table.gui

## Class StarJTable

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JTable
        - - uk.ac.starlink.table.gui.StarJTable

- All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.CellEditorListener, javax.swing.event.ListSelectionListener, javax.swing.event.RowSorterListener, javax.swing.event.TableColumnModelListener, javax.swing.event.TableModelListener, javax.swing.Scrollable

      public class StarJTable
      extends javax.swing.JTable

  Extends the `JTable` for use with `StarTable` objects. This convenience class adapts a JTable and sets its components appropriately for viewing a StarTable. The main jobs it does are to set its model to a suitable StarTableModel and make sure the cell renderers are set up suitably. It also provides `configureColumnWidths(int, int)` and related methods which sets the column widths according to the contents of the first few rows of the table.
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class javax.swing.JTable

      `javax.swing.JTable.AccessibleJTable, javax.swing.JTable.DropLocation, javax.swing.JTable.PrintMode`

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `javax.swing.JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `java.awt.Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

  - ### Field Summary

    - ### Fields inherited from class javax.swing.JTable

      `AUTO_RESIZE_ALL_COLUMNS, AUTO_RESIZE_LAST_COLUMN, AUTO_RESIZE_NEXT_COLUMN, AUTO_RESIZE_OFF, AUTO_RESIZE_SUBSEQUENT_COLUMNS, autoCreateColumnsFromModel, autoResizeMode, cellEditor, cellSelectionEnabled, columnModel, dataModel, defaultEditorsByColumnClass, defaultRenderersByColumnClass, editingColumn, editingRow, editorComp, gridColor, preferredViewportSize, rowHeight, rowMargin, rowSelectionAllowed, selectionBackground, selectionForeground, selectionModel, showHorizontalLines, showVerticalLines, tableHeader`

    - ### Fields inherited from class javax.swing.JComponent

      `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

    - ### Fields inherited from class java.awt.Component

      `accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `StarJTable(boolean rowHeader)` Constructs a new `StarJTable`, optionally with a dummy first column displaying the row number.
    `StarJTable(StarTable startable, boolean rowHeader)` Construsts a new `StarJTable` to display a given `StarTable`, optionally with a dummy first column displaying the row number.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `alignHeadersLeft(javax.swing.JTable jtable)` Utility method that tries to arrange for the column headers to be left-aligned rather than, as seems to be the default, center-aligned.
    `static void` | `configureColumnWidth(javax.swing.JTable table, int maxpix, int rowSample, int icol)` Sets the width of one column to match the width of its contents.
    `void` | `configureColumnWidths(int maxpix, int nrows)` Sets the width of each column heuristically from the contents of the cells headers and cells.
    `static void` | `configureColumnWidths(javax.swing.JTable table, int maxpix, int rowSample)` Utility method provided to set the widths of the columns of a JTable so that they match the widths of their contents.
    `static void` | `configureDefaultRenderers(javax.swing.JTable jtable)` Sets up numeric cell renderers for the columns of a JTable.
    `static int` | `getCellWidth(javax.swing.JTable jtab, int irow, int icol)` Returns the preferred width in pixels of a given cell in a JTable.
    `StarTable` | `getStarTable()` Return a reference to the `StarTable` being used.
    `boolean` | `hasRowHeader()` Indicates whether the first column of this table is a dummy column displaying the row index.
    `void` | `setStarTable(StarTable startable, boolean rowHeader)` Sets this `StarJTable` up to display a given `StarTable` object, optionally with a dummy first column displaying the row number.

    - ### Methods inherited from class javax.swing.JTable

      `addColumn, addColumnSelectionInterval, addNotify, addRowSelectionInterval, changeSelection, clearSelection, columnAdded, columnAtPoint, columnMarginChanged, columnMoved, columnRemoved, columnSelectionChanged, configureEnclosingScrollPane, convertColumnIndexToModel, convertColumnIndexToView, convertRowIndexToModel, convertRowIndexToView, createDefaultColumnModel, createDefaultColumnsFromModel, createDefaultDataModel, createDefaultEditors, createDefaultRenderers, createDefaultSelectionModel, createDefaultTableHeader, createScrollPaneForTable, doLayout, editCellAt, editCellAt, editingCanceled, editingStopped, getAccessibleContext, getAutoCreateColumnsFromModel, getAutoCreateRowSorter, getAutoResizeMode, getCellEditor, getCellEditor, getCellRect, getCellRenderer, getCellSelectionEnabled, getColumn, getColumnClass, getColumnCount, getColumnModel, getColumnName, getColumnSelectionAllowed, getDefaultEditor, getDefaultRenderer, getDragEnabled, getDropLocation, getDropMode, getEditingColumn, getEditingRow, getEditorComponent, getFillsViewportHeight, getGridColor, getIntercellSpacing, getModel, getPreferredScrollableViewportSize, getPrintable, getRowCount, getRowHeight, getRowHeight, getRowMargin, getRowSelectionAllowed, getRowSorter, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedColumn, getSelectedColumnCount, getSelectedColumns, getSelectedRow, getSelectedRowCount, getSelectedRows, getSelectionBackground, getSelectionForeground, getSelectionModel, getShowHorizontalLines, getShowVerticalLines, getSurrendersFocusOnKeystroke, getTableHeader, getToolTipText, getUI, getUIClassID, getUpdateSelectionOnSort, getValueAt, initializeLocalVars, isCellEditable, isCellSelected, isColumnSelected, isEditing, isRowSelected, moveColumn, paramString, prepareEditor, prepareRenderer, print, print, print, print, print, processKeyBinding, removeColumn, removeColumnSelectionInterval, removeEditor, removeNotify, removeRowSelectionInterval, resizeAndRepaint, rowAtPoint, selectAll, setAutoCreateColumnsFromModel, setAutoCreateRowSorter, setAutoResizeMode, setCellEditor, setCellSelectionEnabled, setColumnModel, setColumnSelectionAllowed, setColumnSelectionInterval, setDefaultEditor, setDefaultRenderer, setDragEnabled, setDropMode, setEditingColumn, setEditingRow, setFillsViewportHeight, setGridColor, setIntercellSpacing, setModel, setPreferredScrollableViewportSize, setRowHeight, setRowHeight, setRowMargin, setRowSelectionAllowed, setRowSelectionInterval, setRowSorter, setSelectionBackground, setSelectionForeground, setSelectionMode, setSelectionModel, setShowGrid, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUI, setUpdateSelectionOnSort, setValueAt, sizeColumnsToFit, sizeColumnsToFit, sorterChanged, tableChanged, unconfigureEnclosingScrollPane, updateUI, valueChanged`

    - ### Methods inherited from class javax.swing.JComponent

      `addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree`

    - ### Methods inherited from class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### StarJTable

          public StarJTable(boolean rowHeader)

      Constructs a new `StarJTable`, optionally with a dummy first column displaying the row number.
      Parameters:
        `rowHeader` - whether column 0 should contain row indices

    - #### StarJTable

          public StarJTable(StarTable startable,
                            boolean rowHeader)

      Construsts a new `StarJTable` to display a given `StarTable`, optionally with a dummy first column displaying the row number.
      Parameters:
        `startable` - the `StarTable` to display
        `rowHeader` - whether column 0 should contain row indices
      Throws:
        `java.lang.IllegalArgumentException` - if `startable.isRandom` returns `false`
      See Also:
        `Tables.randomTable(uk.ac.starlink.table.StarTable)`

  - ### Method Detail

    - #### hasRowHeader

          public boolean hasRowHeader()

      Indicates whether the first column of this table is a dummy column displaying the row index.
      Returns:
        `true` iff column 0 displays row index

    - #### setStarTable

          public void setStarTable(StarTable startable,
                                   boolean rowHeader)

      Sets this `StarJTable` up to display a given `StarTable` object, optionally with a dummy first column displaying the row number. This table's model will be set to a `StarTableModel`, and the colum model will be set to one of which all the columns are `StarTableColumn`s.
      Parameters:
        `startable` - the `StarTable` to display
        `rowHeader` - whether column 0 should contain row indices
      Throws:
        `java.lang.IllegalArgumentException` - if `startable.isRandom` returns `false`
      See Also:
        `Tables.randomTable(uk.ac.starlink.table.StarTable)`

    - #### getStarTable

          public StarTable getStarTable()

      Return a reference to the `StarTable` being used.
      Returns:
        reference to the `StarTable`, null if none has been set.

    - #### configureColumnWidths

          public void configureColumnWidths(int maxpix,
                                            int nrows)

      Sets the width of each column heuristically from the contents of the cells headers and cells. Should be called after any default renderers have been set.
      Parameters:
        `maxpix` - the maximum column width allowed (pixels)
        `nrows` - the number of rows of the tables to survey for working out column widths. If a number greater than the number of rows in the table is given, all rows will be surveyed

    - #### configureColumnWidths

          public static void configureColumnWidths(javax.swing.JTable table,
                                                   int maxpix,
                                                   int rowSample)

      Utility method provided to set the widths of the columns of a JTable so that they match the widths of their contents. A heuristic method is used; the widths of the headers and of the first few rows is got, and the width set to this value. This method uses the cell renderers and table contents currently in force, so should be called after internal configuration.
      Parameters:
        `table` - the JTable whose widths are to be set
        `maxpix` - the maximum column width allowed (pixels)
        `rowSample` - the number of rows of the tables to survey for working out column widths. If a number greater than the number of rows in the table is given, all rows will be surveyed

    - #### configureDefaultRenderers

          public static void configureDefaultRenderers(javax.swing.JTable jtable)

      Sets up numeric cell renderers for the columns of a JTable.
      Parameters:
        `jtable` - table to configure; does not have to be a StarJTable

    - #### configureColumnWidth

          public static void configureColumnWidth(javax.swing.JTable table,
                                                  int maxpix,
                                                  int rowSample,
                                                  int icol)

      Sets the width of one column to match the width of its contents. A heuristic * method is used; the widths of the headers and of the first few rows is got, and the width set to this value. This method uses the cell renderers and table contents currently in force, so should be called after internal configuration.
      Parameters:
        `table` - the JTable whose widths are to be set
        `maxpix` - the maximum column width allowed (pixels)
        `rowSample` - the number of rows of the tables to survey for working out column widths. If a number greater than the number of rows in the table is given, all rows will be surveyed
        `icol` - the index of the column to be configured

    - #### alignHeadersLeft

          public static void alignHeadersLeft(javax.swing.JTable jtable)

      Utility method that tries to arrange for the column headers to be left-aligned rather than, as seems to be the default, center-aligned.
      Parameters:
        `jtable` - table to affect

    - #### getCellWidth

          public static int getCellWidth(javax.swing.JTable jtab,
                                         int irow,
                                         int icol)

      Returns the preferred width in pixels of a given cell in a JTable. The table should be configured with its proper renderers and model before this is called. It is assumed that focus and selection does not affect the size.
      Parameters:
        `jtab` - the table