Dan*_*ler 9 java user-interface animation animated-gif
我在寻找一种方法来显示一个动画进度指示器(动画GIF,通过的Java2D等,这里没有偏好呈现的旋转轮)是一个表格单元格,直到将被最终显示已经计算或检索到的值.
到目前为止,我刚刚将一个静态的"待处理..."文本放入每个尚未准备加速显示的单元格中.当数据从后台线程到达时,我将其放入适当的单元格并在表格上调用重绘.
对于静态标签或图片能正常工作,但由于电池渲染使用此功能只是不大不小的橡皮图章,并且不产生每个细胞单独实例(这当然是一个好主意性能明智)动画GIF例如不不是在单个细胞中"玩".
我怎样才能达到这样的效果?与仅仅是一个简单的文本相比,它会产生一个更"精致"的UI.
正如你所说,基本的 JTable 渲染机制不支持这一点,CellRenderer 用于绘制单元格(或必要时单元格的一部分),并且不允许重新绘制,它按需绘制。
如果我需要这样做,我将使用JLayeredPane在 JTable 之上绘制动画渲染器。
不过我认为这会是很多工作。您需要做很多正确的事情,尤其是当您将其放在滚动窗格中时。你的收容层次结构将是这样的:
JScrollPane -> (视口) JLayeredPane -> JTable & JPanel (透明,带动画)
您还需要完成一项棘手的工作来放置动画面板,您要么需要自定义布局管理器来镜像 JTable 列宽度,要么使用 GridLayout 之类的东西。可以做,但是工作量很大。
唯一的选择是保留一个动画单元列表,然后维护一个摆动计时器,反复调用它们的重绘。然后,您将拥有一个自定义 CellRenderer 来执行动画绘制,并且绘制会随着时间而变化。这可能更简单,但在不消耗 CPU 的情况下获得正确的帧速率,并获取重绘更新以匹配动画更新可能会导致一些奇怪的视觉效果