Java 暂停阅读excel并单击按钮继续

Java 暂停阅读excel并单击按钮继续,java,excel,swing,Java,Excel,Swing,我正在做一个考勤监控程序。程序的一部分将从excel文件中读取。该excel文件包含许多工作表,每张工作表都包含教授的日程安排 这就是该部分的运行方式。它将在excel文件的工作表中进行迭代。然后它将首先检查拥有时间表的教授是否已经在数据库中。如果是,计划将添加到数据库中。如果没有,将显示swing jframe以将该教授添加到数据库中 我想知道的是,当jframe出现时,我如何暂停excel文件的读取,并在单击jframe中的OK按钮后继续读取?我尝试使用wait,但是jframe冻结了 提前

我正在做一个考勤监控程序。程序的一部分将从excel文件中读取。该excel文件包含许多工作表,每张工作表都包含教授的日程安排

这就是该部分的运行方式。它将在excel文件的工作表中进行迭代。然后它将首先检查拥有时间表的教授是否已经在数据库中。如果是,计划将添加到数据库中。如果没有,将显示swing jframe以将该教授添加到数据库中

我想知道的是,当jframe出现时,我如何暂停excel文件的读取,并在单击jframe中的OK按钮后继续读取?我尝试使用wait,但是jframe冻结了


提前感谢

您想使用模式对话框吗

公共图书馆{ JDialog jd=newjdialognull; 法学博士setModaltrue; ... jd.pack; jd.show; 对话框关闭后显示System.out.PrintLn; }
读取excel文件可能是在一个单独的线程中进行的。因此,您可以通过使用锁来控制和中断线程的流。例如

new Runnable() {

  public void run() {
    for (Sheet sheet: sheets) {
      String professorName = readProfessorNameFromSheet(sheet);
      Optional<Professor> professor = professorService.getProfessorByName(
      if (!professor.exists()) {
        final Lock lock = new ReentrantLock();
        final Condition condition = lock.newCondition()

        java.awt.EventQueue.invokeLater(new Runnable() {
          public void run() {
            NewProfessorDailog dialog = new NewProfessorDialog(); // this can implement JDialog and with modality hardcoded to true 
            dialog.addWindowListener(new WindowAdapter() {
              public void windowClosed(WindowEvent e) {
                condition.signal();
              }
            });
            dialog.setVisible(true);
          }
        });

        lock.condition.await();
      }
    }
  }

}

代码不完整,只是说明了方法。

为此使用侦听器和处理程序。。。您不能使用wait,因为它会暂停父线程,这将使您的应用程序无法响应。您使用什么读取excel文件?如何显示新帧?@Vlad im使用apachePOI@talex我使用拖放创建了jframe。例如,类是AddProf,然后我通过AddProf a=newaddprof调用frame;a、 设置VisibleTrue;