看起来似乎是线程的执行快慢导致的问题。
可能是你在show出Dialog前计时器已经过了一秒。
你的计时器死掉是什么意思? listener被调用又和这个问题有什么关系?

解决方案 »

  1.   

    不会的,设置成10秒也一样。
    奇怪的是,我的dialog是modal的,在第一次窗口没有被关掉的之前,listner是不会被再次调用的。但是事实上调用了。(listener是table的行选择变化事件的listener)
      

  2.   

    ==
    我帮你看看忘记放哪里了。我try一下。时间太长了。我以前有个类似的问题!
    如果,没有找到。搂住别生气啊。呵呵
      

  3.   

    感觉是1个Swing的Bug。
    如果按下方向键不放,会产生多个键盘事件,排在事件处理线程中,然后调用选择多次行列变化事件。按理是在模式对话框弹出之后,父组件应该不在接受键盘响应,但是此时可能还有在事件队列中派发事件,于是还是会请求弹出对话框,Timer线程会去销毁模式对话框,是否在获取某些资源是和不断请求对话框的事件线程造成死锁了?
    感觉非模式对话框应该不会有死的问题。
      

  4.   

    建议不要在Timer的线程中直接调用dispose()方法,
    利用SwingUtilities.invokeLater(Runnable doRun)调用,应该可以解决。
      

  5.   

    simonhappy说的,跟我的考虑是一样的。
    至于Timer,我用的是javax.swing.Timer,API DOC中说,这个Timer调用会放在Swing事件线程中,所以是安全的,不用在调用SwingUtilities.invokeLater(Runnable doRun)
      

  6.   

    TO tiger_wkh52741(走走.跑跑.瞧瞧!) 
    谢谢:D