如何每秒用日期更新此文本字段
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
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());
}
我得到了日期,但它是静态的,我想每秒都得到实际日期。我该怎么做?
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
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());
}