1

我希望这个布尔值在 5 秒后从 false 变为 true(这是我目前拥有的代码)

checkUser = false;
    loginMessage2 = "Error connecting to server.";
    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    checkUser = true;

但我不希望整个客户端冻结,我没有使用多线程或任何类似的东西

4

1 回答 1

5

您可能需要考虑Timer在您要求它执行 5 秒后查看它。只执行一次计时器。

这样,您就可以得到您想要的,同时您不会冻结应用程序。计时器本身是一个不同的线程,因此它不会阻塞您的应用程序。

摆动计时器教程:http ://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

一个非常简短的例子:

ActionListener listener = new ActionListener(){
  public void actionPerformed(ActionEvent event){
    checkUser = true;
  }
};
Timer checkUserTimer = new Timer(5000, listener); // the 5 second gap
checkUserTimer.start(); // start the timer.
于 2013-10-13T21:51:35.570 回答