在JDialog中,当用户单击JButton时,我想在EDT中执行2个GUI操作:

  1. 显示另一个带有繁忙图标的小型JDialog告诉用户“请在错误的过程结束时等待”。
  2. 在JTable中插入大量记录。

当我尝试执行这两个操作时,“请等待”对话框会按预期阻止插入过程。

如您所见,这两个动作都必须在EDT中完成...所以 有解决方案吗?

有帮助吗?

解决方案

不,这两个操作都不应在EDT中执行。

您的记录不应插入JTable,而应插入其tablemodel中,从而触发更新事件。这样,在显示对话框时,您可以轻松地更新表。

一旦更新表模型,请点火事件,以确保对表进行重新粉刷,并且可以正常工作。

其他提示

第二件事不需要在EDT中完成。产生线程以将项目添加到JTable的型号中,但是该线程偶尔使用Swingworker.invokelater()启动“ firetabledabledatachanged”事件。

大多数tablemodels,例如DefaultTableModel,一旦更新模型,就会调用Firexxx方法,因此是的,您希望在EDT上完成模型的更新,以便将表正确重新粉刷。

“请等待错误的过程结束”。

使用 不确定的Jprogressbar

然后,您可以根据需要更新模型而无需锁定。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top