就像您说的那样,基本的JTable呈现机制不支持此功能,CellRenderer用于绘制单元格(或根据需要绘制单元格的一部分),并且不允许重绘,而是按需绘制。
方法1-JLayeredPane
如果需要这样做,可以使用JLayeredPane在JTable顶部绘制动画渲染器。
但是,我认为这将需要大量工作。您需要做很多事情,特别是如果您将其放在滚动窗格中。您的遏制层级将是这样的:
JScrollPane->(视口)JLayeredPane-> JTable和JPanel(透明,带有动画)
您还需要完成一个棘手的工作,即放置动画面板,或者需要自定义布局管理器来镜像JTable列宽,或者使用诸如GridLayout之类的东西。可行,但工作量很大。
Method2-自定义CellRenderer并在Swing Timer中重绘
唯一的选择是保留一个已设置动画的单元格列表,然后维护一个摆动计时器,反复对它们进行重绘。然后,您将有一个自定义的CellRenderer进行动画绘画,并且绘画会随着时间而变化。这可能更简单,但是在不占用CPU的情况下获得正确的帧速率,以及获取更新的重绘以匹配动画更新可能会导致一些奇怪的视觉效果



