首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWT EventQqueue AccessControlException

AWT EventQqueue AccessControlException
EN

Stack Overflow用户
提问于 2011-09-16 02:57:43
回答 2查看 199关注 0票数 1

我正在通过系统事件队列推送我自己的测试事件队列。在TestEQueue中,我通过一次super.dispatchEvent调用重载了dispatchEvent方法

代码语言:javascript
复制
      TestEQueue mytestqueue = new TestEQueue();
      Toolkit.getDefaultToolkit().getSystemEventQueue().push(TestEQueue);

但是由于某些原因,使用AccessControlException在新的TestQueue中调度失败。其中,在没有TestEQueue的情况下,相同的事件在主程序中被成功调度。

这怎么可能,因为两个队列将在同一个线程组中运行?如何调试此问题?这是一个非常大的测试代码库的一部分,所以我无法复制函数代码。这能与安全管理器相关吗?

EN

回答 2

Stack Overflow用户

发布于 2011-09-16 03:29:05

没有人知道你是如何构建你的own test event queue over the System eventqueue的,也许你怀念invokeAndWait

有用的infoshere

只是我的好奇心,如果你的测试以成功结束,那么请用SwingUtilities.invokeAndWait测试,如果有一些不同(没有等待),并且我标记了你的线程来通知任何变化:-)

此代码应用于测试目的,

代码语言:javascript
复制
import java.awt.AWTEvent;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.lang.reflect.InvocationTargetException;

public class QueueTest {

    public static void main(String[] args) throws InterruptedException, InvocationTargetException {
        EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
        eventQueue.push(new MyEventQueue());

        EventQueue.invokeAndWait(new Runnable() {

            @Override
            public void run() {
                System.out.println("Run");
            }
        });
    }

    private static class MyEventQueue extends EventQueue {

        @Override
        public void postEvent(AWTEvent theEvent) {
            System.out.println("Event Posted");
            super.postEvent(theEvent);
        }
    }

    private QueueTest() {
    }
}
票数 1
EN

Stack Overflow用户

发布于 2011-09-16 07:34:17

请注意,push()将替换现有的EventQueue;它不会添加新的队列。我认为你的问题的前提可能是不正确的。另请参阅此Q&A

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7435987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档