...
ToolTipHeader header = new ToolTipHeader(table.getColumnModel());
table.setTableHeader(header);
...
class ToolTipHeader extends JTableHeader {
private final static Point NO_TIP = new Point(-2, -2);
private Point toolTipLocation = NO_TIP;
private HeaderRenderer renderer;
public ToolTipHeader(final TableColumnModel model) {
super(model);
renderer = new HeaderRenderer();
setDefaultRenderer(renderer);
}
public Point getToolTipLocation(final MouseEvent event) {
return toolTipLocation;
}
public String getToolTipText(final MouseEvent event) {
int column = columnModel.getColumnIndexAtX(event.getX());
TableColumn aColumn = columnModel.getColumn(column);
String tip = "";
toolTipLocation = NO_TIP;
Rectangle headerRect = getHeaderRect(column);
JLabel label = (JLabel) renderer.getTableCellRendererComponent(
getTable(), aColumn.getHeaderValue(), false, false, -1, column);
if (headerRect.width <= label.getPreferredSize().width) {
tip = aColumn.getHeaderValue().toString();
toolTipLocation = headerRect.getLocation();
}
return tip;
}
class HeaderRenderer extends JLabel implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
setText(value.toString());
setFont(table.getFont());
setBorder(UIManager.getBorder("TableHeader.cellBorder"));
setHorizontalAlignment(SwingConstants.CENTER);
return this;
}
}
}