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

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

谢谢。

最佳答案

调用 doClick() 方法最终将生成一个 ActionEvent,因此您的 ActionListener 将被调用。所有监听器都应在 EDT 上执行。

I suppose it's bad to exec the sleep method on the edt,

此 sleep 值预计为毫米毫秒,而不是分钟,以模拟用户单击按钮,因此您将看到按钮绘制为按下状态,然后返回到正常状态。因此,阻止 EDT 几个 MS 不是问题。

关于java - doClick 是否需要在调度线程上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3379122/

相关文章:

java - 为什么 notifyAll() 在 Integer 上同步时会引发 IllegalMonitorStateException?

java - 将对象放入 ByteBuffer 而不对其进行序列化

java - 无法使用 WindowBuilder SWING UI 设置键盘输入焦点

Java垂直布局

java - 大于显示时的屏幕截图而不滚动

java - DialogFragment 上的标题

java - 如何打开一个文件并读取该文件的所有字节?

java - 在Swing中获取 "fat header"背景色

java - Netbeans Accordion 组件

java - 当我在 gui 中更新一行时,如何从数据库重新加载 Jtable 内容?