在JFrame中更新JLabel

时间:2020-01-12 20:29:12

标签: java swing graphics jframe jlabel

我一直在这个网站和互联网上搜索了几个小时,试图弄清楚如何解决此问题。我正在创建一个游戏,这是我第一次使用图形。我想出了如何创建JFrame,JPanel和JLabel的方法,而我似乎无法解决的唯一问题是更新JLabel。假设我是这样开始的:

JLabel testing = new JLabel ("blah", JLabel.CENTER);
testing.setAlignmentX(0);
testing.setAlignmentY(0);
frame.add(testing);

我可以使用Thread.sleep(2500)来更改testing.setText("hi");之后的文本,但是JLabel的先前状态(说等等)仍然存在。 “嗨”只是出现在顶部。我已经尝试过testing.setVisible(false);,还有很多其他事情,但是没有什么让我显示,隐藏和更改JLabel。

任何想法可能有什么问题吗? 谢谢

1 个答案:

答案 0 :(得分:1)

不要sleep或以其他方式阻塞AWT事件调度线程(EDT)。

改为使用javax.swing.Timer。注意:在不同的程序包中没有其他同名的类。

            javax.swing.Timer timer =
                new javax.swing.Timer(2500, event -> {
                    testing.setText("hi");
                });
            timer.setRepeats(false);
            timer.start();