gpt4 book ai didi

java - 表模型更新 + fireTableDataChanged() 打乱表选择

转载 作者:行者123 更新时间:2023-11-29 03:22:42 26 4
gpt4 key购买 nike

我有一个 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())));
}
}

这是在数据模型中。

最佳答案

fireTableDataChanged() 告诉表格数据可能以任何方式发生了变化,基本上当整个数据集已经完全改变时你使用它(例如你已经替换了所有以前的内容有新信息)。表格将从头开始重新绘制,也可能会清除选择。

相反,使用更保守的 fireTableCellUpdated(int,int)并指定可能因时间变化而被修改的每个单元格(大概是“等待时间”列中的所有内容)。

你也可以使用 fireTableRowsUpdated(int,int)并在一次调用中指定已更新的整个行范围,但通常最好坚持保守的一面,以尽量减少不必要的重绘。

关于java - 表模型更新 + fireTableDataChanged() 打乱表选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com