文字不会随着延迟而改变

时间:2013-09-22 20:59:41

标签: java swing

我在另一个类中有一个标签,我正在另一个组件的操作中更改此标签的文本。无论如何,我尝试了像Thread.sleep(300)这样的延迟,甚至实现了我自己的方法,如

    private void waitTime(long WaitTime){
        long waitUntil = System.currentTimeMillis() + WaitTime;
        while(System.currentTimeMillis() != waitUntil);
    }

它工作正常,但文本在延迟之前没有改变。是否存在替代延迟,文本实际上会自行改变然后延迟?

if(frame.Index == 10){
        frame.label.setText("Wow, you're more patient then I am, you win.");
        waitTime(3000);
        if(frame == null) return;
        System.exit(1);
}

1 个答案:

答案 0 :(得分:2)

  • 您正在使用Swing事件线程,因此整个应用程序将与Thread.sleep(...)一起休眠。所以你不想在Swing事件线程(也称为Event Dispatch Thread或EDT)上使用它。
  • 而是使用计时器,而不是Thread.sleep(...)
  • 另一种方法是使用所需的消息向用户抛出JOptionPane,然后在JOptionPane返回时退出应用程序。通过这种方式,您可以保证用户至少看到了选项窗格,并希望在应用程序退出之前显示其消息。