【问题标题】:java applet cmd+shift mac osxjava 小程序 cmd+shift mac osx
【发布时间】:2012-08-04 04:46:24
【问题描述】:

在 mac osx 上,如果您在浏览器中运行 java 小程序,则可以通过按 cmd+shift 将小程序弹出浏览器。这实际上是一种解决方法,当您想在小程序中拖放某些东西时 - 浏览器内的小程序中的拖放在 mac osx 上被破坏了。

所以我的问题是,有什么方法可以检查小程序是否在使用 Java 的浏览器之外?你们有任何想法吗?

编辑: 这个 cmd+shift 功能将框架从浏览器中分离出来,在 JRE 7 以及拖放操作中都被破坏了。

【问题讨论】:

  • D-n-D 是如何失败的?它会抛出异常吗?
  • 只是一个实验,但您可以尝试通过自己迭代父链接或使用SwingUtilities.getRootSwingUtilities.getWindowAncestor 来定位包含小程序的根窗口。运气好的话,那个窗口的类名,或者它的一些其他属性,会给你一个可以使用的指示。
  • 在 mac osx 上,当使用普通的 java TransferHandler 时,一旦小程序在浏览器上运行,拖放就会被忽略。 java 跟踪中没有异常。这对你来说足够了吗?如果没有,我可以给你一个小例子,这样你就可以在 mac 上运行它来查看行为。
  • 我确实创建了一个答案,但您可以自己写一个答案,包括您使用的实际方法,以及您用于区分情况的实际值。不用担心接受代表,只要您也支持我的回答,我就会很高兴。

标签: java macos swing applet


【解决方案1】:

把我的评论变成答案。

您可以尝试通过自己迭代parent links 或使用SwingUtilities.getRootSwingUtilities.getWindowAncestor 来定位包含小程序的根窗口。运气好的话,那个窗口的类名,或者它的一些其他属性,会给你一个可以使用的指示。

【讨论】:

  • 当小程序在浏览器中运行时,SwingUtilities.getRoot(c) 将返回一个对象类型 PluginEmbeddedFrameCALayer。作为浮动框架运行时,根组件的类型为 DetachedAppletController$DetachFrame。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多