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

net.namekdev.entity_tracker.ui.utils.DefaultTableHeaderCellRenderer Maven / Gradle / Ivy

There is a newer version: 0.3.0
Show newest version
package net.namekdev.entity_tracker.ui.utils;

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 { /** * 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. */ 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 */ 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