在 JTable 单元格中显示时间计数器的有效方法
时间计数器显示表中一行的寿命(以秒为单位)。 理想情况下,它每秒更新一次。 我知道我可以在表模型中增加适当的数据,触发事件(每行一个)等。这似乎有点矫枉过正! 有没有更好、更轻松的方法?
A time counter shows the age in seconds of a row in the table. Ideally, it would be updated once per second. I know I can just increment the appropriate data in the table model, fire the events (one per row), etc. It seems like overkill! Is there a better, lighter way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要的是:
下面是表模型的一些伪代码:
表模型还应该为线程提供一个方法,这样它就可以触发“行龄”列的更改事件:
public class MyTableModel Implements TableModel {
然后,线程将触发 updateColumn (..) 方法每秒针对“行龄”列。 此方法的调用应在 EventDispatchThread 中完成,这是使用 SwingUtilities.invokeAndWait(..) 或 SwingUtilities.invokeLater(..) 完成的。
只要 TableModelEvent 的粒度仅覆盖需要更新的单元格(在您的情况下:仅包含行龄的列),它就是实现这一点的最有效方法。
What you need is:
Here's some pseudocode for the table model:
The table model should then also offer a method for the thread, so it can fire a change event for the 'row age' column:
public class MyTableModel implements TableModel {
The thread would then just trigger the updateColumn(..) method each second for the 'row age' column. The invocation of this method should be done in the EventDispatchThread, this is done using SwingUtilities.invokeAndWait(..) or SwingUtilities.invokeLater(..).
As long as the granularity of the TableModelEvent only covers the cells that need to be updated (in your case: only the column with the row age), it's the most efficient way to realize this.