各个面板的Java Swing GlassPane功能?

时间:2012-07-13 03:50:17

标签: java swing jframe jlayeredpane glasspane

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

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

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

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

如果必须,我可以继续监控完整的玻璃窗格鼠标坐标,并弄清楚如何从那里分支逻辑。虽然自我包容和个性化会更好。

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

1 个答案:

答案 0 :(得分:3)

如果您使用的是Java 7,则可以使用JXLayerJLayer来完成此操作。 在JXLayer / JLayer的一般功能优于GlassPane。

没有基于Swing / AWT的解决方案适用于Android - 您必须在那里使用Android特定组件。