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);
}
}
});
}
});