我正在制作出勤监控计划。程序的一部分将从excel文件中读取。该excel文件包含许多工作表,每个工作表包含教授的时间表。
这就是该部分的运行方式。它将遍历excel文件的工作表。然后它将首先检查拥有该计划的教授是否已经在数据库中。如果是,则将计划添加到数据库中。如果没有,则会显示swing jframe以在数据库中添加该教授。
我想知道的是,当jframe显示时,如何在点击jframe中的OK按钮后暂停读取excel文件并恢复它?我尝试使用wait(),但jframe冻结。
提前致谢
答案 0 :(得分:0)
您想使用模态对话框
public void foo () {
JDialog jd = new JDialog(null);
jd.setModal(true);
...
jd.pack();
jd.show();
System.out.println("Shows after the dialog is closed");
}
答案 1 :(得分:0)
读取excel文件可能发生在一个单独的线程中。因此,您可以使用锁来控制和中断线程的流。 E.g。
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();
}
}
}
}
(代码不完整,它只是说明了方法)。