如何使用Date每秒更新此textField

时间:2015-04-16 08:49:10

标签: java date jtextfield

我已经获得了日期,但它是静态的我希望每秒获得实际日期。我该怎么办?

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

3 个答案:

答案 0 :(得分:2)

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

修改: 如果你的代码中需要两个定时器,则不要导入两个.import一个timer.and for其他定时器使用explicit.import only util.timer an for swing timer use new javax.swing.Timer(delay, taskPerformer).start()

答案 1 :(得分:1)

您可以使用javax.swing.Timer.执行此操作,如其他答案中所述。以下是使用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());
}

答案 2 :(得分:0)

Swing包提供的Timer类应该满足您的需求。 This Oracle教程应该让您走上正确的轨道。