当前位置: 首页 > 面试题库 >

如何使线程不冻结整个JFrame。爪哇

端木野
2023-03-14
问题内容

嘿,我只需要回答一个问题…我将如何使以下代码不冻结整个JFrame?

                try {
                Thread.sleep(Integer.parseInt(delayField.getText()) * 1000);
                System.out.println("Hello!");
            } catch(InterruptedException ex) {
                Thread.currentThread().interrupt();
            }

问题答案:

使用其他线程来执行此任务。如果在主UI线程中执行此操作,则它将冻结。例如,您可以执行以下操作

  new Thread() {

        @Override
        public void run() {
            try {
                Thread.sleep(Integer.parseInt(delayField.getText()) * 1000);
                System.out.println("Hello!");
            } catch (InterruptedException ex) {
                Thread.currentThread().interrupt();
            }

        }
    }.start();

更新

在对Robin和Marko提出明智建议之后,我正在用更好的解决方案来更新答案。

    ActionListener taskPerformer = new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
                System.out.println("Hello!");

        }
    };
    javax.swing.Timer t = new javax.swing.Timer(Integer.parseInt(delayField.getText()) * 1000, taskPerformer);
    t.setRepeats(false);
    t.start();


 类似资料:
  • 如果注释掉,框架显示得很好。 我还应该做什么来显示文件选择器?

  • 问题内容: 我开发汽车管理系统程序。然后,我想在汽车进出时将邮件发送给该公司的所有者。我的代码可以成功发送邮件,但是我注意到在发送邮件时,其他JFrame窗口被冻结(我无法在所有JFrame窗口上执行任何操作),直到完成邮件发送为止。这通常用于Javamail还是有办法使其他JFrame仍然正常工作? 在我的程序中,大约需要10秒钟才能完成发送一封邮件。 问题答案: 当您执行繁重的任务时,应在另一

  • 问题内容: 如何在不冻结程序的情况下用Java执行进程?我已经尝试过使用SwingWorker,但是我还不太了解它是如何工作的。 我还有其他方法可以做到这一点吗?我想在我的JDroidLib中使用类似的东西。有关完整的源代码,请查看GitHub:http : //github.com/Team-M4gkBeatz/JDroidLib 提前致谢! 编辑: 感谢您的回答。但是我有一个带有几种方法的类(

  • 我的包含一个嵌入的单个图形(Graphstream),当我尝试在调用Thread的循环中更新它时会冻结。我尝试在独立图形(显示在它自己的)上使用相同的更新,它按预期工作。 我在JFrame中嵌入了一个图,如下所示(AppGraph.java): 然后在JFrame类中调用它,如下所示: 上有用于不同搜索算法(如BFS)的按钮。在执行这些算法期间,以固定的时间间隔对遍历的边着色,以创建一种动画效果,

  • 我有一个带有“开始”按钮和进度条的小型GUI测试。期望的行为是: 单击开始 Progressbar振荡5秒 进度条停止 观察到的行为是“开始”按钮冻结5秒钟,然后显示进度条(无振荡)。 以下是我目前的代码: 根据Bryan Oakley提供的信息,我知道我需要使用线程。我试着创建一个线程,但我猜,由于线程是从主线程中开始的,所以没有帮助。 我的想法是将逻辑部分放在一个不同的类中,并从该类中实例化G

  • 问题内容: 我有一个带有“开始”按钮和进度条的小型GUI测试。所需的行为是: 点击开始 进度条振荡5秒钟 进度栏停止 观察到的行为是“开始”按钮冻结5秒钟,然后显示进度条(无振荡)。 到目前为止,这是我的代码: 根据Bryan Oakley 在此提供的信息,我了解我需要使用线程。我尝试创建一个线程,但是我猜测由于该线程是从主线程中启动的,因此没有帮助。 我有想法放置在不同的类中的逻辑部分,以及从该