AbstractButton.doClick是否需要在调度线程上?
如果我看一下jdk 6来源,我读到了:
public void doClick(int pressTime) {
Dimension size = getSize();
model.setArmed(true);
model.setPressed(true);
paintImmediately(new Rectangle(0,0, size.width, size.height));
try {
Thread.currentThread().sleep(pressTime);
} catch(InterruptedException ie) {
}
model.setPressed(false);
model.setArmed(false);
}
我认为在edt上执行sleep方法是不好的,所以我认为doClic方法不能用edt,但是我没有找到关于这一点的任何文档?
感谢。
答案 0 :(得分:1)
调用doClick()方法最终将导致生成ActionEvent,因此将调用ActionListener。所有听众都应该在EDT上执行。
我认为在edt上执行sleep方法是不好的,
此睡眠值预计为毫秒,而不是模拟用户单击按钮的分钟数,因此您将看到按钮处于按下状态,然后返回其正常状态。因此,阻止EDT的几个MS不是问题。