【发布时间】:2012-07-13 03:50:16
【问题描述】:
我已经构建了一个简单的界面来填充我的整个 JFrame。我正在使用在 Internet here 上发现的 FinalGlassPane 类的一个版本。
这个玻璃窗格没有常规事件侦听器,但它监视其底层组件的 AWTEvents。这样就有了界面的全部功能,我可以使用单个 AWTEvent 处理程序响应全局鼠标移动坐标,并相应地在所有内容上进行绘制。一切都很好,但现在我需要这个功能的副本,每个都有自己的坐标空间和事件处理程序,在主 JFrame 内。我刚刚了解了 JLayeredPane,但想确保使用它可以实现此功能。 IE 在顶部添加了一个完全透明但可绘制的 JPanel 层,用它处理 AWTEvents,并且仍然可以正常触发底层事件。
编辑:我正在阅读有关在 JDesktopPane 内使用多个 JInternalFrame(和相关的玻璃窗格)的信息。我认为 JDesktopPane 不能与布局管理器一起使用,因此我必须在需要时绝对定位/调整 2 帧的大小,但这可能是最佳选择。结束编辑
我要做的最后一件事是为每个界面组件添加鼠标移动侦听器,并且必须转换为父面板坐标才能运行相同的方法。
如果必须,我可以继续监控整个玻璃窗格鼠标坐标,并找出如何从那里分支逻辑。不过,自给自足和个性化会更好。
作为最后一个警告,我想最终将它带到 Android 上,但对 Android 图形一无所知。如果没有分层面板功能,我几乎宁愿先用更难、更便携的方式实现它。
【问题讨论】:
标签: java swing jframe jlayeredpane glasspane