gpt4 book ai didi

java - 如何将实时日期和时间添加到 JFrame 组件中,例如 "status bar"?

转载 作者:搜寻专家 更新时间:2023-11-01 01:04:02 25 4
gpt4 key购买 nike

就像我们添加到演示幻灯片一角的那个。

我已经添加并运行了 SwingX 库,以防有什么帮助。

最佳答案

基本上,您想要使用 JLabel 来显示日期/时间,使用 javax.swing.Timer 设置为定期更新标签和 code>DateFormat 实例来格式化日期值...

enter image description here

public class PlaySchoolClock {

public static void main(String[] args) {
new PlaySchoolClock();
}

public PlaySchoolClock() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}

JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new ClockPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class ClockPane extends JPanel {

private JLabel clock;

public ClockPane() {
setLayout(new BorderLayout());
clock = new JLabel();
clock.setHorizontalAlignment(JLabel.CENTER);
clock.setFont(UIManager.getFont("Label.font").deriveFont(Font.BOLD, 48f));
tickTock();
add(clock);

Timer timer = new Timer(500, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tickTock();
}
});
timer.setRepeats(true);
timer.setCoalesce(true);
timer.setInitialDelay(0);
timer.start();
}

public void tickTock() {
clock.setText(DateFormat.getDateTimeInstance().format(new Date()));
}
}
}

此示例使用半秒的时间间隔。这样做的主要原因是我在设置初始延迟时不会费心去计算我们离下一秒还有多远。这确保我们始终是最新的

下一个问题是问“为什么?”这种设置相对昂贵,计时器每半秒触发一次(以捕获任何边缘情况)并更新屏幕,而大多数操作系统实际上已经在屏幕上显示了日期/时间......恕我直言

关于java - 如何将实时日期和时间添加到 JFrame 组件中,例如 "status bar"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13366780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com