Откуда вы взяли, что можете сделать table.add(label)
и надеетесь, что ярлык будет волшебным образом закрашен над столом?
(То же самое ??? для ответа @ dpatch.)
Вы должны использовать средство визуализации ячеек / редактор для любой пользовательской рисования внутри таблицы.(Или многослойная панель / стеклянная панель, если она находится над таблицей, но похоже, что вам нужны метки в ячейках.)
Необработанное средство визуализации, которое окрашивает ячейку (0, 0) в синий цвет на половину высотыверх в полный рост красного цвета:
table.getColumnModel().getColumn(0).setCellRenderer(new DefaultTableCellRenderer()
{
private int row_ = 0;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
row_ = row;
return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
public void setUI(LabelUI ui)
{
super.setUI(new BasicLabelUI()
{
public void paint(Graphics g, JComponent c)
{
super.paint(g, c);
if( row_ == 0 )
{
Rectangle r = g.getClipBounds();
g.setColor(Color.RED);
g.fillRect(r.x, r.y, r.width, r.height);
g.setColor(Color.BLUE);
g.fillRect(r.x, r.y + 1, r.width, r.height/2 - 1);
}
}
});
}
});