我希望在JTable中有一个列来计算表中布尔列为'true'的时间。它是一个计时器,用于检查复选框的长度。我无法绕过算法的所有机制。
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);
}
}
我是否需要传递一个包含开始时间位置的数组?这让我很困惑。
答案 0 :(得分:3)
以下是执行此操作的一种方法概述:
在TableModel
的实施中,管理List<Row>
,其中每个Row
包含Boolean
的复选框和long
值开始和停止时间;
调整CellEditor
中System.currentTimeMillis()
的开始和结束时间。
Render使用suitable format作为经过时间的差异。
在javax.swing.Timer
的ItemListener
中,定期在模型中为每个有效ActionListener
调用setValueAt()
;听力表应该自动更新。
显示了一个相关示例here。