我有一个JTable跟踪一个人等待坐在餐厅的时间。我的问题是,每当秒,当计时器'滴答'时,行中的选择被删除。换句话说,如果你单击一行它会突出显示蓝色背景和轮廓,但是当计时器滴答时蓝色消失。
ActionListener actListner = new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
aTable.updateTime();
}
};
Timer timer = new Timer(1000, actListner);
timer.start();
这是在主要课程
public void updateTime()
{
data.updateTime();
fireTableDataChanged();
}
这是表格模型
public void updateTime()
{
Date newTime = new Date();
for (int i = 0; i < startTime.size(); i++)
{
this.setTimeWaiting(i, hoursMin.format(new Date(newTime.getTime() - startTime.get(i).getTime())));
}
}
这是在数据模型中。
答案 0 :(得分:4)
fireTableDataChanged()
告诉表格数据可能以任何方式发生了变化,基本上您在整个数据集完全更改时使用它(例如,您已用新信息替换了所有以前的内容)。该表将从头开始重绘,也可以清除选择。
相反,使用更保守的fireTableCellUpdated(int,int)
并指定由于时间变化而可能已被修改的每个单元格(可能是&#34;等待时间&#34;列中的所有内容)。
您还可以使用fireTableRowsUpdated(int,int)
并指定一次调用中已更新的整个行范围,但通常最好坚持保守一方以尽量减少不必要的重绘。