gpt4 book ai didi

java - AWT EventQqueue AccessControlException

转载 作者:行者123 更新时间:2023-11-30 04:59:24 25 4
gpt4 key购买 nike

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

      TestEQueue mytestqueue = new TestEQueue();
Toolkit.getDefaultToolkit().getSystemEventQueue().push(TestEQueue);

但由于某种原因,新 TestQueue 中的调度失败并出现 AccessControlException。在没有 TestEQueue 的情况下,在主程序中成功调度相同的事件。

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

最佳答案

没有人知道如何在系统事件队列上构建自己的测试事件队列,也许您错过了invokeAndWait

有用infoshere

只是我的好奇心,如果您的测试成功结束,请使用 SwingUtilities.invokeAndWait 进行测试,如果有一些差异(不等待任何内容),并且我标记了您的线程以通知任何更改:- )

此代码应该适用于测试目的,

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() {
}
}

关于java - AWT EventQqueue AccessControlException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7435987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com