我對放置在框架上的一個標籤,一個簡單的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