【问题标题】:Getting move events from embedded Java applet从嵌入式 Java 小程序获取移动事件
【发布时间】:2012-04-25 15:01:57
【问题描述】:

当嵌入式 Java 小程序因为浏览器移动而改变位置时,是否可以获得事件?

明显的方法不起作用:

applet.addComponentListener(new ComponentListener() {               
    public void componentMoved(ComponentEvent e) {
        System.out.println("componentMoved");
    }
    // snip
});

【问题讨论】:

  • 这听起来像是实现..anything 的错误方法。顺便说一句 - 你真正想要实现的是什么?
  • @Andrew Thompson:我有一个弹出窗口,我想随小程序一起移动。
  • 嗯.. 小程序和弹出窗口通常是个坏主意,但感谢您的解释。在这种情况下,您需要在浏览器移动 页面滚动时移动浮动窗口。

标签: java events applet awt


【解决方案1】:

为任何固定元素调用getLocationOnScreen(),它是循环中的小程序。请注意,滚动包含小程序的页面时也会触发。

【讨论】:

  • 这可能是最好的解决方案。不幸的是,这似乎也有一些怪癖:在(至少)OS X 上的 Safari 和 Firefox 上 getLocationOnScreen() 直到小程序重新获得焦点才会更新。
  • 那太糟糕了。如果您发布您的最佳尝试的 SSCCE,我会看看它。 (我至少可以确认代码是否适用于 Windows/FF。)
  • 别担心。它在 Windows 上运行良好,但由于没有好的通用解决方案,我认为如果用户应该移动小程序,我们将只保留任何弹出窗口。
  • 好主意。试图让小程序在各种操作系统上的大量浏览器中表现得“恰到好处”可能会导致疯狂。
猜你喜欢
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 2011-03-16
  • 2011-03-21
相关资源
最近更新 更多