gpt4 book ai didi

java - 如何从 Applet 中模拟模态对话框?

转载 作者:搜寻专家 更新时间:2023-11-01 02:56:19 25 4
gpt4 key购买 nike

在 setVisible(true) 上,我调用以下代码来启动模态对话框:

private synchronized void startModal () {
try {
if (SwingUtilities.isEventDispatchThread()) {
EventQueue theQueue = getToolkit().getSystemEventQueue();
while (isVisible()) {
AWTEvent event = theQueue.getNextEvent();
Object source = event.getSource();
if (event instanceof ActiveEvent) {
((ActiveEvent) event).dispatch();
} else if (source instanceof Component) {
((Component) source).dispatchEvent(event);
} else if (source instanceof MenuComponent) {
((MenuComponent) source).dispatchEvent(event);
} else {
System.err.println("Unable to dispatch: " + event);
}
}
} else {
while (isVisible()) {
wait();
}
}
} catch (InterruptedException ignored) { }
}

这在大多数浏览器中工作得很好。但是,在 Windows 的 Opera 和 Safari 中,我遇到了以下严重异常:

java.security.AccessControlException: access denied (java.awt.AWTPermission accessEventQueue)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkAwtEventQueueAccess(Unknown Source)
at java.awt.Toolkit.getSystemEventQueue(Unknown Source)

是否有在这些浏览器中生成假模态对话框的解决方法?

最佳答案

应该授予该权限,除非您有一个奇怪的实现(Sun PlugIn 从 1.2.2 开始授予它,IIRC)。我们在谈论哪些版本?

这可能不是最好的调度循环。

您可能应该在 EDT 之外调用 isVisible

模态界面通常很讨厌。

模态对话框有什么问题?

关于java - 如何从 Applet 中模拟模态对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/804023/

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