【问题标题】:Java Swing GlassPane functionality for individual panels?单个面板的 Java Swing GlassPane 功能?
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多