在JDialog中,当用户点击JButton时我想在EDT中执行2个GUI动作:
当我尝试执行这两个操作时,“请稍候”对话框会阻止插入过程,如预期的那样。
如你所见,这两项行动必须在EDT中完成......所以是否有解决方案?
答案 0 :(得分:3)
不,这两项行动都不应该在EDT中执行。
您的记录不应插入JTable中,而应插入其TableModel中,从而触发更新事件。这样,您可以在显示对话框时轻松更新表格。
更新表模型后,触发事件以确保表重新绘制,并且它将起作用。
答案 1 :(得分:1)
第二件事不需要在EDT中完成。产生一个线程以将项添加到JTable的模型中,但让该线程偶尔使用SwingWorker.invokeLater()来触发“fireTableDataChanged”事件。
答案 2 :(得分:1)
大多数TableModel,例如DefaultTableModel,在模型更新后立即调用fireXXX方法,因此您希望在EDT上更新模型,以便正确地重新绘制表格。
“请等待错误的过程 结束”。
然后您可以根据需要更新模型,而无需锁定。