The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > javax.swing.table  [62 examples] > Column Heads  [6 examples]

e936. Creating a Custom Column Header Renderer in a JTable Component

The default column header renderer simply display a single line of text. If you need to display something other than this, you will need to build and install your own column header renderer. This example defines a generic renderer and installs it on a column.

See e928 Creating a Custom Cell Renderer in a JTable Component for more information about renderers.

    JTable table = new JTable();
    // Add data...
    
    // Install the custom header renderer on the first visible column
    int vColIndex = 0;
    TableColumn col = table.getColumnModel().getColumn(vColIndex);
    col.setHeaderRenderer(new MyTableHeaderRenderer());
    
    
    public class MyTableHeaderRenderer extends JLabel implements TableCellRenderer {
        // This method is called each time a column header
        // using this renderer needs to be rendered.
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
            // 'value' is column header value of column 'vColIndex'
            // rowIndex is always -1
            // isSelected is always false
            // hasFocus is always false
    
            // Configure the component with the specified value
            setText(value.toString());
    
            // Set tool tip if desired
            setToolTipText((String)value);
    
            // Since the renderer is a component, return itself
            return this;
        }
    
        // The following methods override the defaults for performance reasons
        public void validate() {}
        public void revalidate() {}
        protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {}
        public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
    }

 Related Examples
e931. Showing the Table Header in a Non-Scrollable JTable Component
e932. Changing the Name of a Column in a JTable Component
e933. Displaying an Icon in a Column Head of a JTable Component
e934. Implementing Variable-Height Column Headers in a JTable Component
e935. Removing the Column Headers from a Scrollable in a JTable Component

See also: Cells    Columns    Editing    Events    Layout    Rows    Scrolling    Selection    Sorting    Table Model    Tool Tips   


© 2002 Addison-Wesley.