All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.invation.code.toval.graphic.renderer.DefaultTableHeaderCellRenderer Maven / Gradle / Ivy

Go to download

TOVAL comprises a set of java classes for common programming issues. It includes utils for arrays, lists, sets and collections for convenient handling and modification, but also support for mathematic definitions concerning logic (clauses + resolution) together with some algorithms for permutations, powersets and resolution. Additionally it contains a number of types for multisets, matrices with object keys and much more.

The newest version!
package de.invation.code.toval.graphic.renderer;
import java.awt.Component;
import java.util.List;

import javax.swing.Icon;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.RowSorter.SortKey;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;

/**
 * A default cell renderer for a JTableHeader.
 * 

* DefaultTableHeaderCellRenderer attempts to provide identical behavior to the * renderer which the Swing subsystem uses by default, the Sun proprietary * class sun.swing.table.DefaultTableCellHeaderRenderer. *

* To apply any desired customization, DefaultTableHeaderCellRenderer may be * suitably extended. * * @author Darryl */ public class DefaultTableHeaderCellRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = -3040811143786126858L; /** * Constructs a DefaultTableHeaderCellRenderer. *

* The horizontal alignment and text position are set as appropriate to a * table header cell, and the opaque property is set to false. */ public DefaultTableHeaderCellRenderer() { setHorizontalAlignment(CENTER); setHorizontalTextPosition(LEFT); setVerticalAlignment(BOTTOM); setOpaque(false); } /** * Returns the default table header cell renderer. *

* If the column is sorted, the approapriate icon is retrieved from the * current Look and Feel, and a border appropriate to a table header cell * is applied. *

* Subclasses may overide this method to provide custom content or * formatting. * * @param table the JTable. * @param value the value to assign to the header cell * @param isSelected This parameter is ignored. * @param hasFocus This parameter is ignored. * @param row This parameter is ignored. * @param column the column of the header cell to render * @return the default table header cell renderer */ @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); JTableHeader tableHeader = table.getTableHeader(); if (tableHeader != null) { setForeground(tableHeader.getForeground()); } setIcon(getIcon(table, column)); setBorder(UIManager.getBorder("TableHeader.cellBorder")); return this; } /** * Overloaded to return an icon suitable to the primary sorted column, or null if * the column is not the primary sort key. * * @param table the JTable. * @param column the column index. * @return the sort icon, or null if the column is unsorted. */ @SuppressWarnings("incomplete-switch") protected Icon getIcon(JTable table, int column) { SortKey sortKey = getSortKey(table, column); if (sortKey != null && table.convertColumnIndexToView(sortKey.getColumn()) == column) { switch (sortKey.getSortOrder()) { case ASCENDING: return UIManager.getIcon("Table.ascendingSortIcon"); case DESCENDING: return UIManager.getIcon("Table.descendingSortIcon"); } } return null; } /** * Returns the current sort key, or null if the column is unsorted. * * @param table the table * @param column the column index * @return the SortKey, or null if the column is unsorted */ @SuppressWarnings("rawtypes") protected SortKey getSortKey(JTable table, int column) { RowSorter rowSorter = table.getRowSorter(); if (rowSorter == null) { return null; } List sortedColumns = rowSorter.getSortKeys(); if (sortedColumns.size() > 0) { return (SortKey) sortedColumns.get(0); } return null; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy