gpt4 book ai didi

java - 我想以某种方式添加延迟,单击按钮更新标签, hibernate 几秒钟,然后更新其他标签

转载 作者:太空宇宙 更新时间:2023-11-04 14:06:54 25 4
gpt4 key购买 nike

这是按钮的监听器。

 dice.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
String randomNum = String.valueOf(randomNumber);
rand.setText(" Move forward "+randomNum+" boxes"); //rand is a label
try {
Thread.sleep(6000); //1000 milliseconds is one second.
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
//here some handling with randomNumber
Position[playerTurn].setText(posi);
} //end of actionlistener

我想在 rand.setTextPosition[playerTurn].setText 之间添加 sleep ,但它没有按预期工作。它首先等待,然后立即设置我不想要的两个标签。

最佳答案

这是因为尚未调用重绘。因此,在后台您要更改兰特文本,它会等待 6 秒,然后它将设置位置文本。但中间没有重绘,所以它们会同时绘制。

    dice.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String randomNum = String.valueOf(randomNumber);

SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
try
{
Thread.sleep(6000);
}
catch(Exception ie){}

Position[playerTurn].setText(posi);
}
});
}
});

这将启动一个新线程,这样就可以在主 AWT 线程中立即重新绘制第一个标签,然后这里有一个分支线程,它将在 6 秒内触发。不过,如果 Runnable 中捕获到异常,您必须确定要做什么。

编辑

注意到您正在监听器内声明字符串,这将是此代码的一个问题。您需要将其声明为最终变量或实例变量。

关于java - 我想以某种方式添加延迟,单击按钮更新标签, hibernate 几秒钟,然后更新其他标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28779262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com