不明白你的需求。当前线程为EDT,目标调用需在EDT中执行时:同步调用,直接调用即可。
异步调用,可以用 SwingUtilities.invokeLater(Runnable)如果没有需要后台线程运行的东西,就不要用 SwingWorker 。
异步调用,可以用 SwingUtilities.invokeLater(Runnable)如果没有需要后台线程运行的东西,就不要用 SwingWorker 。
调试欢乐多
假如按钮点下去,正在执行事件,则EDT被占用,此时“又点击了一次”,点击事件会被排进队列,等本次事件被执行完之后再执行。简短回答是: 会执行两次。要不要处理则看需求,如果按钮事件引发的操作明显耗时,那直接在ui线程处理可能不是好的设计,因为用户看到的是按钮按下去以后界面就卡住不动。
假如按钮点下去,正在执行事件,则EDT被占用,此时“又点击了一次”,点击事件会被排进队列,等本次事件被执行完之后再执行。简短回答是: 会执行两次。要不要处理则看需求,如果按钮事件引发的操作明显耗时,那直接在ui线程处理可能不是好的设计,因为用户看到的是按钮按下去以后界面就卡住不动。多谢了。