2015-04-16 37 views
1

我已經得到日期,但它是靜態的,我想每秒獲取實際日期。我該怎麼做?如何使用日期每秒更新此文本字段

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

線程和while循環? – JClassic

+0

使用擺動定時器 –

+0

我試過把下一個代碼,但不工作 /*定時器t3 =新定時器(); \t t3.schedule(新的TimerTask(){ \t @覆蓋公共無效的run(){ \t \t //下面的代碼我以前交的 \t} \t},0L,1); – marcss

回答

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

編輯: 如果你需要在你的代碼都定時器不導入both.import一個timer.and對於其他定時器的使用明確進口只使用util.timer一個擺動定時器使用new javax.swing.Timer(delay, taskPerformer).start()

+0

我正在使用Eclipse,以及之前發佈到代碼塊中的代碼,我可以顯示2個錯誤:方法start()未定義類型Timer,而構造函數Timer(int,ActionListener)未定義 – marcss

+0

有你導入javax.swing.Timer類 –

+0

不,因爲我使用import java.util.Timer並顯示我一個錯誤 – marcss

0

Swing包中提供的Timer類應該做你所需要的。 This Oracle教程應該讓你走上正軌。

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()); 
} 
+0

需要返回updateTextField說我ecplise – marcss

+0

對不起,糾正它。在'updateTextField()' – blackbishop

+0

中加入'void'作爲返回類型。現在,我們創建了一個方法invokelater(new Runnable(){}),其類型爲SwingUtilities – marcss