我一直在这个网站和互联网上搜索了几个小时,试图弄清楚如何解决此问题。我正在创建一个游戏,这是我第一次使用图形。我想出了如何创建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。
任何想法可能有什么问题吗? 谢谢
答案 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();