Si bien la creación de un intérprete personalizado en un encabezado de JTable consigo el comportamiento visual esperado (fronteras, fuente, alineación, ...) pero no puedo manejar para obtener los iconos de clasificación que LaF generalmente aparecen cuando las filas están ordenadas.JTable, procesador de encabezados personalizados y clasificación de iconos
Este es el código para configurar el procesador de cabecera personalizada:
Enumeration<TableColumn> columns = getColumnModel().getColumns();
while (columns.hasMoreElements())
columns.nextElement().setHeaderRenderer(new XDeliveryTableHeaderRenderer());
Este es un extracto del procesador de encabezados personalizado:
public class MyTableHeaderRenderer extends JLabel implements TableCellRenderer {
private static final Font labelFont = new Font("Arial", Font.BOLD, 11);
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setFont(labelFont);
setHorizontalAlignment(SwingConstants.CENTER);
setText(value.toString());
setBorder(BorderFactory.createEtchedBorder());
return this;
}
}
¿Alguna pista?
Desafortunadamente eso no hace el truco. La extensión de JLabel y la implementación de TableCellRenderer dieron como resultado un encabezado con el mismo color de fondo y sin borde (de ahí la necesidad de establecer explícitamente el borde). La solución que sugirió (llamada a través de .... setHeaderRenderer (nueva MyTableHeaderRenderer (nueva DefaultTableCellRenderer()))) creado una cabecera con un fondo blanco y todavía no hay iconos de clasificación - sin embargo, con la mecánica de clasificación sigue trabajando. – s3lvatico
Ah perdón olvidé, en lugar de pasar nueva DefaultTableCellRenderer() necesita pasar table.getTableHeader(). GetDefaultRenderer(). –
debidamente observado, probado, probado, apreciado. Funcionó como un encanto, gracias :) – s3lvatico