用写一个线程,每秒钟设置时间显示标签(lblDateTime)的内容为当前时间,java闹钟界面时间动态显示
时间: 2024-03-24 15:40:34 浏览: 15
以下是一个Java Swing的示例代码,使用了java.util.Timer和java.util.TimerTask类:
```java
import javax.swing.*;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
public class Clock extends JFrame {
private JLabel lblDateTime;
public Clock() {
initComponents();
startTimer();
}
private void initComponents() {
lblDateTime = new JLabel();
lblDateTime.setFont(new Font("Arial", Font.PLAIN, 20));
lblDateTime.setHorizontalAlignment(SwingConstants.CENTER);
lblDateTime.setText("00:00:00");
getContentPane().add(lblDateTime, BorderLayout.CENTER);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("Clock");
setSize(300, 100);
setLocationRelativeTo(null);
}
private void startTimer() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
SwingUtilities.invokeLater(() -> {
lblDateTime.setText(getCurrentTime());
});
}
}, 0, 1000);
}
private String getCurrentTime() {
return String.format("%tT", System.currentTimeMillis());
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new Clock().setVisible(true);
});
}
}
```
在这个示例中,我们在Clock类的构造函数中创建了一个JLabel控件用于显示时间,并调用了initComponents函数初始化界面。在startTimer函数中,我们创建了一个Timer实例,并设置了一个TimerTask回调函数,用于更新时间。在回调函数中,我们使用SwingUtilities.invokeLater函数确保在UI线程上更新UI控件。最后,在getCurrentTime函数中,我们使用String.format函数格式化当前时间。