暂停阅读excel和button点击继续

我正在制定一个考勤监控计划。 程序的一部分将从Excel文件中读取。 该excel文件包含许多工作表,每张表包含教授的时间表。

这部分应该如何运行。 它将遍历Excel文件的表单。 然后它将首先检查拥有该时间表的教授是否已经在数据库中。 如果是,则时间表将被添加到数据库中。 如果不是的话,一个swing jframe会显示在数据库中添加该教授。

我想知道的是,当jframe出现时,如何暂停excel文件的读取并在点击jframe中的OKbutton后恢复它? 我尝试使用wait(),但jframe冻结。

提前致谢

你想使用modal dialog

public void foo () { JDialog jd = new JDialog(null); jd.setModal(true); ... jd.pack(); jd.show(); System.out.println("Shows after the dialog is closed"); }

读取excel文件可能发生在一个单独的线程中。 因此,您可以通过使用锁来控制和中断线程的stream程。 例如

 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(); } } } } 

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