0

我在另一个类中有一个标签,并且我正在另一个组件的操作中更改此标签的文本。无论如何,我已经尝试过像 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);
}
4

1 回答 1

2
  • 您将 Swing 事件线程和整个应用程序置于睡眠状态Thread.sleep(...)。所以你不想在 Swing 事件线程(也称为 Event Dispatch Thread 或 EDT)上使用它。
  • 相反,使用计时器,而不是Thread.sleep(...)
  • 另一种方法是向用户抛出一个带有所需消息的 JOptionPane,然后在 JOptionPane 返回时退出您的应用程序。这样,您可以保证用户在应用程序退出之前至少已经看到了选项窗格并希望看到它的消息。
于 2013-09-22T21:00:32.107 回答