当检查JTable的复选框应该启动定时器(JTable Checkbox should start

2019-10-20 02:49发布

我期待有一个JTable的列计算,表中的布尔列是“真”的时间。 这是一个长期的复选框选中怎样的定时器。 我有麻烦缠绕我的头周围所有的机械的算法。

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);
            }
        }
    };

在“录入()”函数用于跟踪的时间,一旦它被添加存在的行量,我想也使用该功能(因为它被称为由计时器滴答声每次)来设置的值复选框选中跟踪器,但我不知道。

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);
            }

    }

我需要通过与开始时间的位置的阵列? 这是混淆了我。

Answer 1:

下面是做到这一点的一种方式的概要:

  • 在你的实现TableModel ,管理List<Row> ,其中每Row包含一个Boolean的复选框,并long值作为开始和结束时间; 使用System.currentTimeMillis()根据需要。

  • 状态的开始,并在停止时间ItemListenerCellEditor

  • 呈现使用的差作为经过时间合适的格式 。

  • ActionListener一个的javax.swing.Timer ,周期性地调用setValueAt()模型中的每个活动Row ; 听音表应自动更新。

一个相关的例子显示在这里 。



文章来源: JTable Checkbox should start timer when checked