doClick是否需要在调度线程上?

时间:2010-07-31 17:31:56

标签: java swing

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,但是我没有找到关于这一点的任何文档?

感谢。

1 个答案:

答案 0 :(得分:1)

调用doClick()方法最终将导致生成ActionEvent,因此将调用ActionListener。所有听众都应该在EDT上执行。

  

我认为在edt上执行sleep方法是不好的,

此睡眠值预计为毫秒,而不是模拟用户单击按钮的分钟数,因此您将看到按钮处于按下状态,然后返回其正常状态。因此,阻止EDT的几个MS不是问题。