【问题标题】:Adding JPanel to Canvas将 JPanel 添加到画布
【发布时间】:2012-07-22 08:23:46
【问题描述】:

由于 JPanel 和 Canvas 都是同一级别的组件,因此解决方案可能是某种“黑客”。 This 问题说您将无法将轻量级组件添加到重量级画布(我希望 JPanel 透明)。

如果这不可行,那么放置一个透明的组件会起作用吗?另外,将 Swing 组件添加到 Component 是否可行(它必须工作,即使它很糟糕)。我将如何将它实际放在画布上(因为它们都是同一级别的组件)?

注意:我永远不会在真正的应用程序中做这样的事情,我只是在这种情况下需要它

【问题讨论】:

  • 您是否习惯使用Canvas
  • 为什么你会使用Canvas?您实际上想在这里实现什么目标?
  • @AndrewThompson 我得到了一个画布,我想在上面放置 Swing 组件。我无法改变我获得 Canvas 的事实。
  • 面板的内容是静态的吗?什么,具体是在面板中? ..当需要解释您试图提供的“用户功能”时,更多信息总比更少信息好。你看过JLayeredPane吗? Java 7 提供了在没有工件的情况下混合 Swing 和 AWT 组件的能力。可以你的应用程序。证明要求 Java 7+ 的合理性?
  • 这是对 4 个问题的一个答案。四分之一的还不错,浪费我的时间。祝你好运。

标签: java swing awt jpanel


【解决方案1】:

一种可能性是将 JPanel 添加到 Canvas 所在的任何容器中,然后将 JPanel 的颜色设置为 0 的 alpha。这应该将其添加到旧的容器上,而不会阻挡 Canvas。这是你想要的吗?

编辑:考虑一下,JPanel 的默认颜色是透明的......您应该能够将 JPanel 添加到 Canvas 的父级,并将其放在上面

【讨论】:

  • 画布在 JFrame 中。我向其中添加了 JPanel,但它显示在 Canvas 下方。
  • 啊,抱歉,没想到这个。 Canvas 是一个重量级的组件,因此它仍将保持领先地位。见这里:java.sun.com/developer/technicalArticles/GUI/mixing_components/… 不要认为有办法做到这一点
  • 是否可以只使用一个面板并在其中添加一个 JPanel?
  • 是的,但你不是说你必须使用 Canvas 吗?
  • 不,我的意思是向 JFrame 添加一个 Panel 并且由于 Panel 也是一个重量级组件,它将与 Canvas 重叠(对吗?)。然后我可以在其中添加一个 JPanel。
猜你喜欢
  • 2013-08-09
  • 1970-01-01
  • 2020-09-09
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多