【问题标题】:Updating JTextField every second每秒更新 JTextField
【发布时间】:2014-04-02 23:07:26
【问题描述】:

我有这个简单的 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 有点生疏了。我知道创建一个线程来处理它是不安全的。

【问题讨论】:

标签: java swing user-interface timer


【解决方案1】:

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

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

【讨论】:

  • 即使 jtextfield.setText() 不需要重新绘制/验证即可工作?
  • @Vipar Swing 组件足够聪明,可以在调用属性(如 setText())时重新验证/重新绘制自己。为什么要使用 JTextField。文本字段用于输入文本。我认为您只想显示文本。
  • 在计时器运行时我还能用什么来显示时间?
猜你喜欢
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多