好的,我知道如何制作一个简单的自定义 JComponent。我知道如何覆盖 TableCellRenderer。我似乎无法将两者结合起来。
JComponent
这是我创建的示例:
public static class BarRenderer extends JComponent
{
final private double xmin;
final private double xmax;
private double xval;
public BarRenderer(double xmin, double xmax)
{
this.xmin=xmin;
this.xmax=xmax;
}
@Override protected void paintComponent(Graphics g)
{
super.paintComponent(g);
Rectangle r = g.getClipBounds();
g.drawRect(r.x, r.y,
(int)(r.width * ((xval-xmin)/(xmax-xmin))), r.height);
}
public void setXval(double x) {
this.xval = x;
repaint();
}
public double getXval() { return xval; }
}
它可以作为独立的 JComponent 正常工作。我打电话setXval(something)
,它更新就好了。(编辑:我有一个摆动计时器,它会定期更新数据)
但是如果这个组件是我在 TableCellRenderer.getTableCellRendererComponent() 中返回的东西,那么它只会在我单击相关单元格时重新绘制。是什么赋予了?我一定遗漏了一些非常简单的东西。