package jadex.commons.jtable; import java.awt.Component; import javax.swing.Icon; import javax.swing.JTable; import javax.swing.UIManager; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.JTableHeader; public class SortHeaderRenderer extends DefaultTableCellRenderer { // public static Icon NONE = new SortArrowIcon(SortArrowIcon.NONE); public static Icon ASCENDING = new SortArrowIcon(SortArrowIcon.ASCENDING); public static Icon DECENDING = new SortArrowIcon(SortArrowIcon.DECENDING); public SortHeaderRenderer() { setHorizontalTextPosition(LEFT); setHorizontalAlignment(CENTER); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { int index = -1; int direction = 0; if (table != null) { if (table.getModel() instanceof ISorterFilterTableModel) { ISorterFilterTableModel model = (ISorterFilterTableModel) table.getModel(); index = table.convertColumnIndexToView(model.getSortColumn()); direction = model.getSortDirection(); } JTableHeader header = table.getTableHeader(); if (header != null) { setForeground(header.getForeground()); setBackground(header.getBackground()); setFont(header.getFont()); } } setIcon(col==index && direction!=ISorterFilterTableModel.NONE ? new SortArrowIcon(direction): null); setText((value == null) ? "" : value.toString()); setBorder(UIManager.getBorder("TableHeader.cellBorder")); return this; } }