java - 如何在执行一个 Action 的同时执行另一个 Action ?

标签 java swing actionlistener

我的 gui 类扩展了 JFrame。 GUI 包含两个 JButton(start_button 和 view_button)。

  JButton start_button;
  JButton view_button;

按下start_button后执行的操作需要一些时间(范围从2分钟到5分钟)。

  start_button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            //...
            //action executing. May take 2 to 5 min to complete.
        }
  });

执行此操作时,我希望在 JDialogue 内包含的单独 TextPane 中查看此操作的状态日志。通过按 view_button 即可使此 JDialogue 可见。

   view_button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            myJDialogue.setVisible(true);
        }
   });

但是,除非由 start_button 执行的操作完成,否则我无法访问任何 gui 组件。因此我无法通过按 view_button 检查实时状态日志。 当一项操作正在运行时,我该如何执行此操作?请帮忙。谢谢。

最佳答案

您需要在单独的线程中执行长时间运行的任务,这样就不会阻止 GUI 响应事件。

阅读 Swing 教程中关于 Concurrency 的部分了解更多信息。也许 SwingWorker 是最简单的方法,因为它会为您创建线程,并在线程完成时通知您,以便您可以更新 GUI。

关于java - 如何在执行一个 Action 的同时执行另一个 Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27833638/

相关文章:

java图形更新

java - ActionListener 内的 JFrame 实例溢出

java - http.antMatcher ("/**") .authorizeRequests().antMatchers ("/**") 中的 antMatcher ("/") 需要什么?

java - View 的 contentDescription 不能与 TextToSpeech 一起正常工作

JavaFX IllegalArgumentException

java - Android 应用程序在播放声音时崩溃

java - StyleConstants.setBold 中 boolean 参数的含义是什么?

java - JFrame 的内容转换为 JPanel

java - 是否可以从java中的另一个类导入监听器

java - FileNotFoundException 问题