gpt4 book ai didi

Java - Swing - 在一个 JFrame 中显示多个 JComponent

转载 作者:行者123 更新时间:2023-12-01 09:48:08 26 4
gpt4 key购买 nike

在游戏中,我想在 JFrame 中同时显示两个 JComponent 实例。一个是背景板,另一个是玩家角色。

因此,一个组件(背景)将位于另一个组件(角色)后面。角色将由多个矩形绘制,因此它通常会有一些完全透明的区域。

如何做到这一点?我知道通常情况下,当我向框架添加两个组件(方法 add(Component))时,只有最后添加的组件可见。这是通过以下代码完成的:

frame.add(backg); // backg is an instance of a certain class that derives from JComponent
// (...)
frame.add(psc); // psc is an instance of an another class that derives from JComponent
frame.pack();
frame.setVisible(true);

我应该如何更改上面的代码?

最佳答案

首先,如果您想用 Java 编写游戏,请尝试 Slick2D提供了大量的工具和更好的图形功能(包含在 LWJGL 中,而 LWJGL 又包含在 OpenGL 中)。其次,如果您决定采用 Swing 路线,这里有一个简单的解决方案:

    //Player + background components defined here
playerComp.setOpaque(false);
JLayeredPane layer = new JLayeredPane();
layer.add(backgroundComp,1,0);
layer.add(playerComp,2,0);

我相信上面的评论中提到了这两种解决方案。将播放器组件不透明度设置为 false 允许这些透明区域显示播放器后面的组件或背景图像。如果您熟悉 CSS/HTML 中的 z-index,则 JLayeredPane基本上通过允许您设置组件呈现的顺序来向 Swing 添加 z 索引。因此,将播放器设置为不透明,然后将其渲染在背景组件前面。

关于Java - Swing - 在一个 JFrame 中显示多个 JComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37816833/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com