如何在Java Swing中显示更改文本(即,显示更改秒的时间)

n0p*_*0pe 2 java time swing date jlabel

我正在寻找一种方法来将JFrame上的当前日期和时间显示为JLabel,但是它会自动更新.一旦它被绘制到窗格,我不需要担心手动更新它,因为它会刷新说,每2秒.

有没有正确的方法呢?而不是每2秒手动更改JLabel的文本值.

mre*_*mre 14

使用javax.swing.Timer以确保在EDT上发生对Swing组件的更新.

Timer t = new javax.swing.Timer(2000, new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e){
        yourLabel.setText(...);
    }
});
t.start();
Run Code Online (Sandbox Code Playgroud)


Rid*_*del 7

使用Swing Timer.正如教程所解释的那样,它是工作所需的工具.

它们使用的唯一替代方法是嵌入a SwingUtilities.invokeLater()SwingUtilities.invokeAndWait()in TimerTask.