单个面板的 Java Swing GlassPane 功能?

标签 java swing jframe jlayeredpane glasspane

我构建了一个简单的界面来填充我的整个 JFrame。我正在使用在互联网上发现的 FinalGlassPane 类的版本 here .

此玻璃 Pane 没有常规事件监听器,但它监视其基础组件的 AWTEvents。这样,界面就具有完整的功能,我可以使用单个 AWTEvent 处理程序响应全局鼠标移动坐标,并相应地在所有内容之上进行绘制。一切都很好,但现在我需要这个功能的副本,每个功能都有自己的坐标空间和事件处理程序,位于主 JFrame 内。我刚刚了解了 JLayeredPane,但想确保使用它可以实现此功能。 IE 在顶部添加一个完全透明但可绘制的 JPanel 层,用它处理 AWTEvents,并且仍然可以正常触发底层事件。

编辑:我正在阅读有关在 JDesktopPane 内部使用多个 JInternalFrame (和相关玻璃 Pane )的信息。我认为 JDesktopPane 不能与布局管理器一起使用,因此我必须在需要时绝对定位/调整 2 个框架的大小,但这可能是最好的选择。结束编辑

我想做的最后一件事是为每个界面组件添加鼠标移动监听器,并且必须转换为父面板坐标才能运行相同的方法。

如果必须的话,我可以继续监视整个玻璃 Pane 的鼠标坐标,并找出如何从那里分支逻辑。不过,独立和个性化会更好。

作为最后一个警告,我想最终将其带到 Android,但对 Android 图形一无所知。如果没有分层面板功能,我几乎宁愿首先以更难、更便携的方式实现它。

最佳答案

这可以通过使用 JXLayer 来完成或JLayer如果您使用的是 Java 7。 总的来说,JXLayer/JLayer 的功能优于 GlassPane。

基于 Swing/AWT 的解决方案无法在 Android 上运行 - 您必须在那里使用 Android 特定组件。

关于单个面板的 Java Swing GlassPane 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463870/

相关文章:

java - 在 Java Swing 中关闭数据库连接

java - 检测哪个监视器显示窗口

java - 将常规数据保存到文件

java - 二维数组仅显示文本函数中的最后一个元素

java - Java 中的强制向下转换

java - Jframe 内容不显示

java - 从另一个类调用 JFrame

java - 如何使用 XML 配置和 JaxWsProxyFactoryBean 增加 Apache CXF 超时?

java - JTabbedPane 给出空指针异常

java - 在 JTextArea 组件中自动创建新文本行