每秒更新JTextField

时间:2014-04-02 23:07:27

标签: java swing user-interface timer

我有一个时间注册应用程序的简单GUI

gui

由于GUI用于时间注册,我希望它显示一个计时器,当您按“开始”直到按“停止”时运行。

目前这两种方法都是这样完成的:

private void trStartBtnActionPerformed(java.awt.event.ActionEvent evt) {                                           
    trStartBtn.setEnabled(false);
    trStopBtn.setEnabled(true);

    startTime = System.nanoTime();
}                                          

private void trStopBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          
    endTime = System.nanoTime();
    trStartBtn.setEnabled(true);
    trStopBtn.setEnabled(false);
    // Opgave Navn
    String taskName = JOptionPane.showInputDialog(
            this,
            "Task name",
            "Time Registration",
            JOptionPane.INFORMATION_MESSAGE);

    // Tiden det tog
    long result = endTime - startTime;
    double seconds = (double) result / 1000000000;
    int minutes = (int)seconds / 60;
    int hours = minutes / 60;
    String time = hours + ";" + minutes + ";" + (int) seconds;

    // Dags Dato
    DateFormat format = new SimpleDateFormat("dd/MM/yyyy");
    Date today = new Date();
    String date = format.format(today);

    DefaultTableModel m = (DefaultTableModel)trTable.getModel();
    Object[] data = {date,time,taskName};
    m.addRow(data);
    trScrollPane.repaint();
}

但是我如何添加功能,以便右边的计时器每秒都会打勾,以便在使用程序时显示时间?已经有一段时间了,我在Swing有点生疏了。我知道制作一个线程来处理它并不安全。

1 个答案:

答案 0 :(得分:3)

使用Swing Timer每秒安排标签更新。

单击“开始”按钮启动计时器,单击“停止”按钮可停止计时器。