如何在 setBounds 的情况下暂停进程



我想在按下按钮时显示标签的移动一段时间。请帮忙。只需告诉我在更改 setBounds 期间我如何暂停进程一段时间,在这种情况下,睡眠方法暂停进程,但仅执行最后一个 setBound 语句:

void ActionPerformed(..){
    Thread b = new Thread();
        try{
            label.setBounds(100,150,70,70);
            b.sleep(1000);
            label.setBounds(100,200,70,70);
            b.sleep(1000);
            label.setBounds(100,150,70,70);
        }catch(InterruptedException e){
            e.printStackTrace();
        }
}

阅读摆动并发教程。经验法则:

  • 您可能不会在事件调度线程中休眠,因为它会冻结 UI
  • 您不能访问事件调度线程以外的线程中的 Swing 组件

因此,您需要一个单独的线程休眠,然后要求 EDT 修改标签的边界。

使用摆动计时器,或从后台线程调用SwingUtilities.invokeLater(),以便修改标签边界的任务由 EDT 完成。

另请注意,sleep() 是一种静态方法。应该使用 Thread.sleep() 而不是 b.sleep() 来调用它。

相关内容

  • 没有找到相关文章

最新更新