你把它setVisible(true)之后,父窗体就挂起了,
你必须把它改称非模态的,或者把要加入的东西
用一个线程加入,注意Swing对线程不安全,
必须用EventQueue.InvokeLater()来调用线程。你干吗这样做呢?

解决方案 »

  1.   

    主要是目的是为了有这样的显示效果:
    当JDialog显示时,主界面那里还在操作数据库
    当每更新一条数据时,则把所更新的内容显示在
    JDialog中,由于可能更新n多条,当关闭JDialog时,就
    停止更新数据库,JDialog退出
      

  2.   

    那样的话,你就启动一个线程把当前的操作,
    显示在你的对话框上,这个线程在JDialog的
    setVisible(true)之前一步用EventQueue.invokeLater()
    调用。Swing对线程不安全,所以只能EventQueue这样做。
    对于某些耗时的io处理,就算你用了线程,
    一样不太灵敏,常常是io全处理完了,才把所有
    步骤最后一次显示出来。但是ProgressBar就不会这样,
    我看过监视流的原代,但本人愚昧,没找出什么特别的,
    我也不是很清楚为什么大量io运算对ProgressBar响应
    得还是这么好。