0

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

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

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

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

如果必须,我可以继续监视整个玻璃窗格鼠标坐标,并找出如何从那里分支逻辑。不过,自给自足和个性化会更好。

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

4

1 回答 1

3

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

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

于 2012-07-13T04:16:28.073 回答