如何每秒用日期更新此文本字段

How to update this textField with the Date every second

我得到了日期,但它是静态的,我想每秒都得到实际日期。我该怎么做?

    Date fecha=new java.util.Date();
    textField = new JTextField(fecha.toLocaleString());
    textField.setFont(new Font("Verdana", Font.BOLD, 15));
    textField.setHorizontalAlignment(SwingConstants.CENTER);
    textField.setBackground(UIManager.getColor("Button.background"));
    textField.setBounds(362, 665, 300, 50);
    frame.getContentPane().add(textField);
    textField.setColumns(10);

Timer class provided by the Swing package should do what you need. This Oracle 教程应该会让您走上正轨。

javax.swing.Timer - 在指定的时间间隔触发一个或多个 ActionEvents

refer java doc

int delay = 1000; //milliseconds
  ActionListener taskPerformer = new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
          //...Perform a task...
      }
  };
  new Timer(delay, taskPerformer).start();

编辑: 如果您的代码中需要两个计时器,请不要导入 both.import 一个 timer.and 供其他计时器使用 explicitly.import 仅 util.timer 一个摆动计时器使用 new javax.swing.Timer(delay, taskPerformer).start()

您可以使用 javax.swing.Timer. as explained in other answers. Here is another solution using java.lang.Thread 来做到这一点:

new Thread (new Runnable(){
 public void run(){
    Thread.sleep(1000);
     SwingUtilities.invokelater(new Runnable(){
          public void run(){
             updateTextField();
          }
      });
 }
}).start();

与:

public void updateTextField(){
   Date fecha = new java.util.Date();
   textField.setText(fecha.toLocaleString());
}