【问题标题】:Layering Panels in Java for Game/Simulation type Application用于游戏/模拟类型应用程序的 Java 分层面板
【发布时间】:2015-03-13 19:49:12
【问题描述】:

我正在尝试创建模拟类型的应用程序,在我的 JFrame 中,我想创建两层,一层用于绘制一次并保持不变的背景,顶层负责除它们之外的所有动画和活动对象是透明的,所以你可以看到下面的背景。

我的问题是:

我可以使用 JPanel 来实现这一点,显然 JPanel 不会相互叠加,这是正确的吗?

Jlayers,我从 Jlayers 中看到的大部分都是装饰性实现,是否适合在其中运行一个摇摆计时器并在父级之上重新绘制多个项目?

顶层必须是背景层的子层还是可以在 JFrame 中创建?

还有其他的摇摆组件可以实现这一点吗?

提前感谢您的帮助。

【问题讨论】:

  • 如果你想对多个组件进行分层,最好使用JLayeredPane。您还可以选择另外一个选项,即GlassPaneJPanel,因为您想多次重绘它,或者我说渲染组件,JPanel 将允许您在不影响背景的情况下执行此操作glasspane。但请确保在渲染组件时,如果您尝试刷新整个 JFrame,这将是 GUI 的性能问题,它可能是位 laggy。您可以使用 Swing 的计时器类来执行基于代码的操作。
  • 我有一个摇摆计时器,JFrame 不会被刷新,所以我的性能应该很好,我打算使用 JLayeredPane 尝试一个峰值,看看它是否有效,干杯。

标签: java swing jpanel jlayer


【解决方案1】:

我可以使用 JPanel 来实现这一点,显然 JPanel 不会相互叠加,这是正确的吗?

您可以在每个面板上使用 BorderLayout,然后将一个面板添加到另一个面板。您还需要使顶部面板不透明。可能不是最好的设计。

Jlayers 主要是装饰性的实现 是的,JLayer 是用来装饰的。

JLayeredPane 可能是您正在寻找的。它将允许您使用多个图层,它会为您管理图层。阅读 How to Use Layered Panes 上的 Swing 教程部分,了解更多信息和工作示例。

【讨论】:

  • 我已经创建了 jlayeredPane 并且它可以工作,但是我现在遇到的问题是透明度,顶层是默认灰色并且看不到背景,setOpaque();不解决吗?
  • @user3081855,我建议你需要让它不透明。那是setOpaque( false )
猜你喜欢
  • 2015-09-28
  • 2016-02-10
  • 2012-05-21
  • 2017-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多