Java 表格模型更新+fireTableDataChanged()会中断表格选择
我有一个JTable,它跟踪一个人在餐厅等待就座的时间。我的问题是,每秒钟,当计时器“滴答”一声时,一行上的选择就会被删除。换句话说,如果单击一行,它将以蓝色背景和轮廓高亮显示,但当计时器滴答作响时,蓝色将消失Java 表格模型更新+fireTableDataChanged()会中断表格选择,java,swing,timer,jtable,Java,Swing,Timer,Jtable,我有一个JTable,它跟踪一个人在餐厅等待就座的时间。我的问题是,每秒钟,当计时器“滴答”一声时,一行上的选择就会被删除。换句话说,如果单击一行,它将以蓝色背景和轮廓高亮显示,但当计时器滴答作响时,蓝色将消失 ActionListener actListner = new ActionListener() { public void actionPerformed(ActionEvent event) { aTable.up
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())));
}
}
这在数据模型中。fireTableDataChanged告诉表数据可能以任何方式发生了更改,基本上是在整个数据集完全更改时使用它,例如用新信息替换了以前的所有内容。该表将从头开始重新绘制自身,还可能清除所选内容
相反,请使用更保守的方法,并指定每个可能由于时间变化而被修改的单元格(假定为“等待时间”列中的所有内容)
您也可以使用并指定在一次调用中更新的整个行范围,但通常最好坚持保守的一面,以尽量减少不必要的重画。fireTableDataChanged告诉表数据可能以任何方式发生了更改,基本上,当整个数据集完全更改时(例如,用新信息替换所有以前的内容)使用它。该表将从头开始重新绘制自身,还可能清除所选内容
相反,请使用更保守的方法,并指定每个可能由于时间变化而被修改的单元格(假定为“等待时间”列中的所有内容)
您还可以使用并指定在一次调用中已更新的整个行范围,但通常最好坚持保守的一面,以尽量减少不必要的重画