日期:2014-05-20  浏览次数:20715 次

javax.swing.SwingWorker类的一个问题
SwingWorker,如果只需要done(),不需要doInBackground(),也就是不需要在另一个线程中做任何事情。那么我在doInBackground()中写return null;它还是要使用另一个线程执行这一句,虽然就只有一句。怎么才能完全不使用另一个线程?
我想使用javax.swing.SwingWorker类来写done()里面的操作,写起来比较简单规范一些,例如可以利用javax.swing.SwingWorker只执行一次的特性,要不然还得自己写控制代码,虽然写也不复杂。

------解决方案--------------------
引用:
假如按钮点下去,正在执行事件,还没弹上来,又点击了一次,会执行两次吗?要不要加点措施,例如按钮setennable=false


假如按钮点下去,正在执行事件,则EDT被占用,此时“又点击了一次”,点击事件会被排进队列,等本次事件被执行完之后再执行。

简短回答是: 会执行两次。

要不要处理则看需求,如果按钮事件引发的操作明显耗时,那直接在ui线程处理可能不是好的设计,因为用户看到的是按钮按下去以后界面就卡住不动。