我对放置在框架上的一个标签,一个简单的Swing程序之前出现,睡眠一秒钟,然后放置另一个标签的框架如下:JLabel的不眠
import javax.swing.*;
import java.util.concurrent.*;
public class SubmitLabelManipulationTask {
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame("Hello Swing");
final JLabel label = new JLabel("A Label");
frame.add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 100);
frame.setVisible(true);
TimeUnit.SECONDS.sleep(1);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
label.setText("Hey! This is Different!");
}
});
}
}
然而,在睡眠之前我看不到屏幕上的第一个标签。睡觉时屏幕空白。之后,我看到了原来的标签,然后立即看到最后的标签“嘿!这是不同的!”在屏幕上。为什么原始标签不出现在JFrame上?
您需要使用摆动计时器 – AMB
@AMB:不需要重新验证或重画,因为他不添加或删除组件。 OP,所有你需要的是一个Swing Timer来代替你的睡眠代码,因为睡眠的调用是在事件线程上完成的,它将整个GUI都置于睡眠状态 - 而不是你想要的。 –
@DontKnowMuchButGettingBetter多数民众赞成我想说,TY – AMB