gpt4 book ai didi

java - JTable 复选框应在选中时启动计时器

转载 作者:行者123 更新时间:2023-11-29 05:23:41 24 4
gpt4 key购买 nike

我希望在 JTable 中有一个列来计算表中 boolean 列为“真”的时间。它是一个计时器,用于记录复选框被选中的时间。我无法理解算法的所有机制。

ActionListener actListner = new ActionListener() 
{
public void actionPerformed(ActionEvent event)
{
System.out.println("k");
aTable.updateTime();
}
};

Timer timer = new Timer(1000, actListner);
timer.start();

TableModelListener tableListener = new TableModelListener()
{
public void tableChanged(TableModelEvent e)
{
int row = e.getFirstRow();
int column = e.getColumn();
TableModel model = (TableModel)e.getSource();
String columnName = model.getColumnName(column);
Object data = model.getValueAt(row, column);


if (aTable.data.getVisible(row))
{
//aTable.data.setTimeVisible(row, date math);
}
}
};

“updateTime()”函数用于跟踪添加行后存在的时间量,我也在考虑使用该函数(因为它每次都被计时器滴答调用)来设置复选框已选中跟踪器的值,但我不确定。

public void updateTime()
{
//data.updateTime();

Date newTime = new Date();

Integer time = null;
System.out.println("updateTime");
for (int i = 0; i < data.startTime.size(); i++)
{
time = Integer.parseInt(data.twoMin.format(new Date(newTime.getTime() - data.startTime.get(i).getTime())));
//Date waiting = new Date(time);
if (time >= 10)
{
data.setTimeWaiting(i, data.twoMin.format(new Date(newTime.getTime() - data.startTime.get(i).getTime())));
System.out.println("2");
}
else if (time < 10)
{
data.setTimeWaiting(i, (data.oneMin.format(new Date(newTime.getTime() - data.startTime.get(i).getTime()))));
System.out.println("1");
}


fireTableRowsUpdated(i,i);
}

}

我需要传递一个包含开始时间位置的数组吗?这让我很困惑。

最佳答案

这是执行此操作的一种方法的概述:

  • 在您的 TableModel 实现中, 管理 List<Row> ,其中每个 Row包含 Boolean对于复选框和 long开始和停止时间的值;使用 System.currentTimeMillis()根据需要。

  • ItemListener 中设置开始和停止时间在你的 CellEditor .

  • Render使用 suitable format 作为耗时的差异.

  • ActionListener javax.swing.Timer ,定期调用 setValueAt()在每个 Activity 的模型中 Row ;监听表应该自动更新。

显示了相关示例here .

关于java - JTable 复选框应在选中时启动计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23602711/

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