Java JTable复选框应在选中时启动计时器
我希望在JTable中有一个列,用于计算表中布尔列为“true”的时间。它是复选框被选中的时间的计时器。我很难理解算法的所有机制Java JTable复选框应在选中时启动计时器,java,swing,timer,jtable,Java,Swing,Timer,Jtable,我希望在JTable中有一个列,用于计算表中布尔列为“true”的时间。它是复选框被选中的时间的计时器。我很难理解算法的所有机制 ActionListener actListner = new ActionListener() { public void actionPerformed(ActionEvent event) { System.out.println("k"); aTable.updateT
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);
}
}
public void updateTime()
{
//data.updateTime();
Date newTime=新日期();
整数时间=空;
System.out.println(“更新时间”);
对于(int i=0;i=10)
{
setTimeWaiting(i,data.twoMin.format(新日期(newTime.getTime()-data.startTime.get(i.getTime())));
系统输出打印项次(“2”);
}
否则如果(时间<10)
{
setTimeWaiting(i,(data.oneMin.format(新日期(newTime.getTime()-data.startTime.get(i.getTime()))));
系统输出打印项次(“1”);
}
耐火材料(i,i);
}
}
我是否需要传递一个包含开始时间位置的数组?这让我很困惑 以下是一种方法的概述:
- 在的实现中,管理一个
,其中每个列表
包含复选框的行
,以及开始和停止时间的布尔值
值;根据需要使用长
System.currentTimeMillis()
- 在计算机中的
中调节启动和停止时间ItemListener
- 将差值作为使用的经过时间
- 在的
中,定期在模型中为每个活动的ActionListener
行调用
;侦听表应自动更新setValueAt()
图中给出了一个相关示例。A将导致更好的响应,并减少不调用fireTableRowsUpdated(i,i)的猜测;模型之外的方法回答得好,谢谢。还有一个问题:如何列出“行”?